问题一:
char tmp[10];
sprintf(tmp,"1234567890abc");为什么以上程序运行正常,tmp=124567890abc, tmp不是已定义为10长度吗?,这样不是应该越界吗?问题二:
在我理解中,string 应是等于char[]的,但是为什么以下程序不正确呢?
CString s;
char tmp[10]={'1','2','3','4','5','6','7','8','9','0'};s=char;问题三:指针的指针表示什么?如:
int* p=12;
*p=?
还是就是int* p与int *p是同一回事吗?
char tmp[10];
sprintf(tmp,"1234567890abc");为什么以上程序运行正常,tmp=124567890abc, tmp不是已定义为10长度吗?,这样不是应该越界吗?问题二:
在我理解中,string 应是等于char[]的,但是为什么以下程序不正确呢?
CString s;
char tmp[10]={'1','2','3','4','5','6','7','8','9','0'};s=char;问题三:指针的指针表示什么?如:
int* p=12;
*p=?
还是就是int* p与int *p是同一回事吗?
解决方案 »
- 用 directshow 自带的wm asf writer保存video之后,尺寸变成320 X 240
- 关于CListCtrl中的CheckBox的问题,急!急!急!
- 将列表框里面的内容写文件及读文件到列表框,有什么好的办法
- 聊天室程序中为什么服务端和客户端之间发送数据不能正确接受?
- vc6.0和matlab混编
- 为什么不能设置断点呢??
- 谁能给发一份<OpenGL超级宝典>的源码文件,送500分。
- 一个关于数据结构的描述,有没有能帮我的?
- 求一个程序模型,就是有一堆数据,然后要画出 类似股票实时走势图那种图形
- 在vs2012下开发C++程序,用哪套库连接摄像头最好?
- 为了保护您的计算机,windows已经关闭了此程序
- 关于顺序表和链表的一个疑问
sprintf(tmp,"1234567890abc");为什么以上程序运行正常,tmp=124567890abc, tmp不是已定义为10长度吗?,这样不是应该越界吗?在debug版本模式下,系统会给你默认多分配一点无用的堆栈空间,虽然已经越界了,但是写到无用的堆栈空间去了,无所谓,改成release版本编译试试
第二个
CString s;
char tmp[10]={'1','2','3','4','5','6','7','8','9','0'};
s=char; //这个地方出了问题 应该是 s = tmp
第三个:int* p与int *p是一回事 还有一种写法 : int * p 都是可以的
但是要看公司的编码规范,具体的写法。
因为C语言在进行字符串操作时不检查字符串的空间是否够大,所以可能会出现数组越界而导致程序崩溃的问题。即使碰巧,程序没有出错,也不要这么用,因为早晚会出错。所以一定要在调用sprintf之前分配足够大的空间给buf。
第二个问题:
s是CString对象,char是数据类型,您把数据类型给一个类型的对象?
第三个问题:
*p=12;
int* p和int *p本来就是一回事情。
至于采用什么写法完全是个人喜好问题。
楼上的已回答了问题二:
CString s;
char tmp[10]={'1','2','3','4','5','6','7','8','9','0'}; s=char;//应该改为s=tmp;问题三:
int *p=12;申请一个指向常量的指针,指针名为p,指针首地址的内容为*p
所以
*p=12
笑过