c++ strcpy()函数
为什么strcpy()时char*a[]="ABC";charb[]="D";strcpy(a,b);//这里运行时会出错啊?我打错了程序上char*a...
为什么strcpy()时
char * a[]="ABC";
char b[]="D";
strcpy(a,b);//这里
运行时会出错啊?
我打错了程序上char *a 展开
char * a[]="ABC";
char b[]="D";
strcpy(a,b);//这里
运行时会出错啊?
我打错了程序上char *a 展开
展开全部
因为x只能存放10个字符,但你的000已经有10个,连同结尾的'\0',一共11个字符,因此溢出了或者说数组越界了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个声明就错误了
指针字符串是指针字符串
字符串数组是字符串数组
而且还有 指针字符串内容是不能被修改的
即使是
char * a="ABC";
char b[]="D";
strcpy(a,b);//这里
也是编译没错 运行出错
指针字符串是指针字符串
字符串数组是字符串数组
而且还有 指针字符串内容是不能被修改的
即使是
char * a="ABC";
char b[]="D";
strcpy(a,b);//这里
也是编译没错 运行出错
更多追问追答
追问
我打错了 程序上没错是char*a 可是为什么可以 a[2]='A' 这样修改呢?
追答
一个是指针数组 不能修改
一个是字符串数组 你说的 a[2] ='A' 你去看看声明
是字符串数组
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
去掉数组a[]前边的*号,是字符数组,可以进行strcpy。去掉a[]后边的[] 是字符串指针,为常量,不能作为strcpy的第一个参数。有*有[]是字符串数组,,同意楼上回答。
追问
我打错了 程序上市char* a
追答
这样定义的就是指向字符串常量的指针,指向静态存储空间,不能被修改,既不能作为strcp的第一个参数,而如果是用[]定义的那就是在栈空间,是动态的,可以修改的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-31
展开全部
"ABC"存在静态存储空间,不能修改的。如果你改成char a[],就是栈空间,应该就可以改了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
显然不对啊,你这里定义的a是一个指向字符常量指针的指针,你要用strcpy(*a,b)
追问
我打错了 程序上市char* a
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询