sizeof(test)
返回24.它是一个由3个char*
指针组成的数组,每个指针在我的机器上各占8个字节。我的问题是C是否也为角色正确分配了空间?我想这样做是因为这有效,但我想确保我做得正确。
char* test[] = {"QW", "BT", "GH"};
int size = sizeof(test) / sizeof(char*);
答案 0 :(得分:6)
是的,确实如此。但是,字符可能位于内存的只读部分。
答案 1 :(得分:3)
是的,编译器将为字符串文字分配空间(通常在只读静态数据部分中)。
答案 2 :(得分:2)
是。该值位于内存中,由数组中使用的* char指针指向的地址。所以是的,它存储在内存中。
答案 3 :(得分:0)
...字符串文字实现为静态存储持续时间的数组,带有'char'类型......
因此,对象被分配为任何其他static
变量
static int arr[100] = {0};
if (strcmp(foo, "bar")) exit(0);
int *ptr = malloc(100 * sizeof *ptr);
数组arr
和字符串文字"bar"
以相同的方式分配;与分配ptr
的方式不同。