69,369
社区成员
发帖
与我相关
我的任务
分享
int *p; /* p未被初始化,p中存放的地址是随机的,既然是随机的,在这地址中存放的数据就有可能是程序不能修改的 */
*p=4; /* 试图修改权限未知的空间中的内容(比如代码段、常量区等),程序很可能要报错,不报错是你运气好,随机到了有修改权限的内存而已。 */
int *s="abcd"; /* 把常量"abcd"的地址给s */
int *s; /* s是一个随机地址 */
s="abcd"; /* s变成了常量"abcd"的地址,不会有问题。 */
*s='a'; /* 同1所述。 */
char s[]="hello"; /* 开辟了一个长度是6的字符数组,把"hello"的内容拷贝到这个数组,而不是像指针变量初始化时,只把地址给了s。因为s是数组,又具备可写权限,所以试图修改它也不会有问题。 */