猿问

C语言指针的问题,字符串和数组指针的问题

#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 时发生访问冲突。

琼华紫英
浏览 1382回答 1
1回答

傻圆傻圆

char *str = "xxxxxxxxx";    // 只读 char str[] = "xxxxxxxxxx";  // 读写    两种方式定义的字符串都可以访问其中的内容,但是具体的细节还是有一些不同的,第一种定义方法一般叫做字符串常量,常量,就意味着不能修改其中的内容,所有在你的代码中,尝试修改了这个常量中的内容,所以会报错。    第一种方式我个人理解如下(不一定准确,个人感觉):const char str[] = "xxxxxxxxxx"; const char *p_str = str;
随时随地看视频慕课网APP
我要回答