C语言中指针定义的字符串和数组定义的字符串的区别

2016-12-03 12:27:37来源:cnblogs.com作者:devil_wln人点击

第七城市

2016-12-03

数组定义字符串:

每次定义数组的时候,系统都会在内存开辟你指定数组大小的空间,并且数组中的内容对于我们是可读可写的,看如下代码:

 1  #include<stdio.h> 2  int main() 3  { 4      char str[100] = "hello world"; 5      char str1[100] = "hello world"; 6      str[0] = 'd'; 7      printf("%s/n/n",str); 8      printf("%x/n",&str); 9      printf("%x/n",&str1);10      return 0;11  }

再看执行结果:

每次定义的数组的首地址是不相同的。

指针定义字符串:

指针定义的字符串是存储在内存中的静态存储空间中,可读但不可写,并且如果再定义一个相同的字符串,指针的值不会变,还会指向原来的地址,不会开辟新的存储空间,看如下代码:

 1 #include<stdio.h> 2 int main() 3 { 4     char *p = "hello world"; 5     char *p1 = "hello world"; 6     //p[0] = 'd'; 7     printf("%s/n/n",p); 8     printf("%x/n",p); 9     printf("%x/n",p1);10     return 0;11 }

看执行结果:

当我们试图改变hello world中的h时,运行程序时会自动停止,相同的字符串的指针是指向同一个地方的。

 

第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台