0$房天下问答|这样用指针引用字符串怎么报错?(来自成都上都小区)$https://m.fang.com/ask/ask_1794820.html$https://static.soufunimg.com/common_m/m_public/201511/images/asksharedefault.png
packc/pages/ask/detail/detail?askid=1794820
-
这样用指针引用字符串怎么报错?(来自成都上都小区)
各位好!学到字符串处理函数,看网络课程,老师的程序和这个一模一样,就运行正常。我核对了好几遍,一模一样的,编译时不报错,运行时报错。#include "string.h"#include "stdio.h"main(){char *s1="abcdefg",*s2="bcde"; strcpy(s1,s2); printf("%s",s1);}报错内容:"0x00401191"指令引用的"0x00420020"内存。该内存不能为"written"。如果将两个指针都变成字符型数组,就运行正常。但我真的不明白为什么按书上写却不行,书上都是写的*s1,*s2。用的是vc++6.0,因为考试时是这个。感谢各位!
更多
共1个回答
-
-
-
syboy
丨Lv 1
楼上好啊:我觉得这样解释更合理:char *s1="abcdefg",*s2="bcde"; 中s1和s2均是指向字符串常量的指针,字符串常量存储在静态存储区,不能对常量进行修改(写操作),比如:strcpy(s1,...);s1[1]='c';等等修改s1指向的内容的。char s1[]="abcdefg", 是在普通存储区分配的数组内存,可以修改。char *s1=(char *)malloc(sizeof("abcdefg"));strcpy(s1,"abcdefg");这样实在堆存储区分配内存,也可以进行修改。可能表述不到位,借鉴
免责声明:问答内容均来源于互联网用户,房天下对其内容不负责任,如有版权或其他问题可以联系房天下进行删除。

关注成功