字符型数组 可以存储字符串吗

#include
int g;// 存储在全局静态区
int main()
{
char *p1 = "hahajhkj"; // 和g一样
char p2[] = "haha"; // 堆栈中
*p1='a';
printf("%x %x %x", &g, p1,p2);
return 0;
}
为什么老是停止运行啊

4个回答

p1常量指针,不能修改

char *p1 = "hahajhkj";这样写,是让p1指向了一个常量池的地址,不能修改,想要修改,必须用malloc或者new开辟空间后才能修改内容

可以用strcpy来拷贝:
char *p1 = (char *)malloc(100);
strcpy(p2, p1);

运行停止是因为你的变量g没有赋初始值,而你后面有将其输出,编译器不知道输出什么,故运行停止。不过你这程序问题太多。。。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐