房天下 > 房天下问答 > 业主生活 > 其他
  • 这样用指针引用字符串怎么报错?(来自成都上都小区)

    各位好!学到字符串处理函数,看网络课程,老师的程序和这个一模一样,就运行正常。我核对了好几遍,一模一样的,编译时不报错,运行时报错。#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,因为考试时是这个。感谢各位!

    提问者:闲云野

    发布于2011-01-17

共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");这样实在堆存储区分配内存,也可以进行修改。可能表述不到位,借鉴
    +1 2011-01-18 举报
热门人气推荐
免责声明:问答内容均来源于互联网用户,房天下对其内容不负责任,如有版权或其他问题可以联系房天下进行删除。