c语言:字符串变量和字符数组

来源:百度知道 编辑:UC知道 时间:2024/05/14 08:49:49
在一个VC的MFC工程里面如下代码:
char *a="hello";
char *b="world";
strcat(a,b);
编译不会报错,但是运行的时候程序一走到这里就会非正常退出,
为何 ?求解,多谢!
但是这段代码在C++ builder和turbo c下都运行正确 啊

因为指针a指向的是常量字符串, VC里字符串常量存放在静态数据区里面的,静态数据区是只读的,strcat(a, b)是要修改静态区的数据,肯定就出错了, 但编译是不会发现这种错误的.可改为:
char array[] = "hello";
char *a=array;
char *b="world";
strcat(a,b);

但是这段代码在C++ builder和turbo c下都运行正确 啊