sizeof(test)
返回24.它是一个3 char*
指针的数组,它们在我的机器上各有8个字节。我的问题是C是否为角色正确分配了空间?我猜这是因为这个工程,但我想确保我做得正确。C字符串内存分配隐式?
char* test[] = {"QW", "BT", "GH"};
int size = sizeof(test)/sizeof(char*);
sizeof(test)
返回24.它是一个3 char*
指针的数组,它们在我的机器上各有8个字节。我的问题是C是否为角色正确分配了空间?我猜这是因为这个工程,但我想确保我做得正确。C字符串内存分配隐式?
char* test[] = {"QW", "BT", "GH"};
int size = sizeof(test)/sizeof(char*);
是的,它的确如此。字符可能在内存的只读部分。
是的,编译器会为字符串文字分配空间(通常在只读静态数据部分)。
是的。该值位于数组中使用的* char指针指向的地址的内存中。所以是的,它存储在内存中。
的6.4.5/5重述...字符串文字被实现为具有 '字符' 类型静态存储时间的阵列...
所以,对象被分配为任何其他static
变量
static int arr[100] = {0};
if (strcmp(foo, "bar")) exit(0);
int *ptr = malloc(100 * sizeof *ptr);
数组arr
和字符串文字"bar"
以相同的方式分配;不同于分配ptr
的方式。
请注意,它们也是不可修改的。 – 2011-04-03 21:41:11