【发布时间】:2020-12-07 13:25:01
【问题描述】:
下面的代码只是读取 10 个整数并将它们存储在长度为 10 的数组中。我有两个问题:
- 本示例中使用宏
N ((int)(sizeof(a) / sizeof(a[0])))或仅使用表示数组长度的整数(本示例中为 10)有什么区别? - 在初始化之前不是
sizeof()调用了a[0]吗?
任何帮助将不胜感激。
#include <stdio.h>
#define N ((int)(sizeof(a) / sizeof(a[0])))
int main(void)
{
int a[10], i;
printf("\nEnter %d numbers ", N);
for (i = 0; i < N; i++)
scanf("%d", &a[i]);
return 0;
}
【问题讨论】:
-
sizeof关心的是类型。a[0]的类型无论是否被初始化都是一样的。 -
旁白:对于这个简单的示例,使用
#define N 10和int a[N], i;会更容易。