数组实际上是如何工作的?

时间:2015-01-23 21:37:52

标签: c++ c arrays pointers

这是我计划的一部分。

我理解s1是如何工作的,但我对s2

感到困惑
char* s1="string";
char s2[7]="string";
printf(  "\n &s2 is  :%p",&s2);
printf("\n\n  s2 is  :%p",s2);
printf(  "\n *s2 is  :%c",*s2);

输出

&s2 is  :0018FF48 //i.e. s2 is contained in memory address 0013FF48    
 s2 is  :0018FF48 //i.e  s2 points to  0013FF48
*s2 is  :s        //i.e  value contained in 0013FF48 is s

这总结如下,我无法弄清楚它的含义:

  • s2包含在0018FF48中,s2包含0018FF48,地址no 0018FF48包含's'

s2正在扮演什么角色?

1 个答案:

答案 0 :(得分:1)

char s2[7]="string";是一个包含7个字符和初始值的数组 char *s1="string";在程序二进制文件的某处是字符串常量,在运行时不可更改,并且是一个访问它的指针。你不能释放它。