【发布时间】:2013-08-29 11:30:55
【问题描述】:
使用此代码:
#include <stdio.h>
void printSize(char *messages[]) {
printf("%d", sizeof(messages) / sizeof(char *));
}
int main(void) {
printf("Size when through passing direct to function: ");
printSize((char *[]){"Zero", "One", "Two", "Three"});
printf("\n");
printf("Size when calculating in main: %d\n", sizeof((char *[]){"Zero", "One", "Two", "Three"}) / sizeof(char *));
return 1;
}
我得到输出:
Size when through passing direct to function: 1
Size when calculating in main: 4
我知道无法在 char* 数组中获取正确数量的元素,但我很好奇为什么它们会给出不同的结果。
【问题讨论】:
-
数组衰减为指针。您在第一个示例中获得了指针的大小。
-
这不是重复的。我问的是为什么给出不同的答案,而不是如何获取数组中元素的数量。
标签: c arrays pointers char size