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

标签 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 并且地址 0018FF48 包含 's'

s2实际上扮演什么角色?

最佳答案

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

关于c++ - 数组实际上是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28119113/

相关文章:

c++ - 在 wxWidgets 中,有没有办法避免在调整窗口大小时只显示部分按钮?

c - 在 C 中打印反转的字符串/数组

C#define based in another #define 错误

c++ - 二进制文件如何工作? (从c++的角度来看)

java - 这样做有效吗? (c、c++、java)

c++ - 堆栈调用析构函数,即使遵循三规则

c - 尝试在嵌套 for 循环内交换二维数组中的值

C linux sem_wait 在线程中(有时)不起作用

javascript - 拼接和 var x={}

c - 如何在C/MIPS中找到最大和的子序列?