飘飞的海

 

char *p和char q[]采用"abcdef"初始化的不同

 1 #include <stdio.h> 
 2 int main() 
 3 { 
 4     char *p="abcdef";  //p在栈中,只是一个指针没有申请内存,“abcdef”在常量数据区
 5     p[2]='W'; 
 6     printf(p); 
 7     getchar(); 
 8     return 0; 
 9 } 
10 //这个程序编译通过,但是程序运行会出错
11 //p指向的是一块常量数据区,不能修改其值
12 //另一个: 
13 #include <stdio.h> 
14 int main() 
15 { 
16     char s[]="abcdef";//s在栈,“abcdef”在栈数据区
17     s[2]='W'; 
18     printf(s); 
19     getchar(); 
20     return 0; 
21 } 
22 //这个程序能够正常输出! 
23 //因为s是一个数组,分配的是一块栈上的内存,而上面只是一个指针,没申请内存!

 

posted on 2012-10-26 14:10  飘飞的海  阅读(354)  评论(0编辑  收藏  举报

导航