请教 strcat应用的
用同样的代码复现了一下:
参考一个问答:https://zhidao.baidu.com/question/390378147814693085.html语句 a = 'aaa'; 是将a指向了 只读数据段的“aaa”,因为是只读数据段,所以不允许被修改,而 strcat()函数的原型是:char strcat ( char destination, const char * source ); 参数destination不是一个只读的数据,是会被改变的,换句话讲,如果这里的strcat操作成功,那么只读数据段内容就会被修改,这显然是不合理的,所以这里会报错。我实验了以下内容替代main()函数的前两句:其中不可行的有:1,
char *a = (char *)malloc(10 * sizeof(char));
a = 'aaa';
2,
char *a = 'aaa';
3,
char *a;
a = 'aaa';
其中可行的有:1,
char *a = (char *)malloc(10 * sizeof(char));
strcpy(a,'aaa');
2,
char a[] = 'aaa';
3,
char a[200] = 'aa';
这种问题在不能很好理解内存分配的时候确实很难想明白。因为编译的时候还没有进行分配,不会报错。
赞0
踩0