#include<iostream>void main(){ char s[20]="abcdefghi"; char *p="1234567"; printf("%s\n",strcpy(p+3,s+8));//printf("%s\n",strcat(p+3,s+8));都会报错 system("pause");}//上式中的问题为什么指针在前会报错,而换成数组在前就不会报错?如printf("%s\n",strcpy(s+3,p+4));//错误问题0x0F121DF7 (msvcr110d.dll) (ConsoleApplication1.exe 中)处的第一机会异常: 0xC0000005: 写入位置 0x009ECC83 时发生访问冲突。//0x0F121DF7 (msvcr110d.dll) (ConsoleApplication1.exe 中)处有未经处理的异常: 0xC0000005: 写入位置 0x009ECC83 时发生访问冲突。
1 回答
傻圆傻圆
TA贡献14条经验 获得超23个赞
char *str = "xxxxxxxxx"; // 只读 char str[] = "xxxxxxxxxx"; // 读写
两种方式定义的字符串都可以访问其中的内容,但是具体的细节还是有一些不同的,第一种定义方法一般叫做字符串常量,常量,就意味着不能修改其中的内容,所有在你的代码中,尝试修改了这个常量中的内容,所以会报错。
第一种方式我个人理解如下(不一定准确,个人感觉):
const char str[] = "xxxxxxxxxx"; const char *p_str = str;
- 1 回答
- 0 关注
- 1376 浏览
添加回答
举报
0/150
提交
取消