我正在搜索这段我不相信有效的代码,但我在书籍中找到了有关编译器中存在的字符串表的内容。
char *p;
p = "something";
printf("%s", p);
这段代码是如何工作的?
最佳答案
"something"
是一个字符串文字,它是存储在只读内存中的以 null 结尾的字符数组。 p
是一个指向 char 的指针。由于您将此指针设置为指向只读内存,因此您应该始终将其声明为 const char*
。
sizeof(p)
给出 p 的大小。 p
是一个指针,因此您可以获取指针的大小,在特定系统上为 4 个字节。
如果您声明一个数组 char arr[] = "something";
,您将获得存储在本地数组中的某些内容的副本,您也可以在其中修改它。如果你获取一个数组的 size,你就会得到预期的大小。在数组情况下,sizeof(arr)
将为您提供 9+1=10 字节。
作为引用,请阅读:
关于c - 字符串表如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27018139/