这是我的程序的一部分。
我了解 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/