一直搞不明白直接被赋给指针的字符串(p="hello")是以什么形式存储在内存中的,今天终于解决了
char *p; p=(char *)malloc(sizeof(p)*10); //P指向新开辟出来的内存区域 strcpy(p,"hello"); //在新开辟出的内存区域里填充了字符串"hello".
strcpy(p,"hello");的意思是把"hello"所在的内容拷贝到p所指向的内存空间
"hello"存储在常量空间,p的值可以改变
改变p不影响"hello"
char *p; p=(char *)malloc(sizeof(p)*10); p="hello"; //字符串"hello"是放在程序的专门常量内存区域的(这块区域是程序编译时候就已经决定了)
p="hello";的意思是让p指向"hello"
"hello"存储在常量空间,P就指向了这块区域,P的值不可变,因为"hello"不可更改
int *p; p=(int *)malloc(sizeof(p)); *p=123456; //整形常量存储在p新开辟出的内存区域 free(p);这里p的值可以更改,当p被free后123456消失