【发布时间】:2012-12-11 03:38:09
【问题描述】:
我试图通过保留一个 16 MiB 的大块并尝试每次访问不同的元素来查找时间来查找缓存块。我只是不能写数组的长度。
如何编写一个 for 循环来遍历数组。我需要数组的长度;我怎么能找到那个?我试过sizeof(a)/sizeof(a[0]),但这不起作用,或者我做错了什么,因为我的作业表告诉我它可以容纳400万int的..
register *a;
a = malloc(16777216);
int i;
for (i = 0; i < sizeof(a)/sizeof(a[0]); i = i + 1) {
printf("\ni = %d", i);
}
这只会打印 i = 0 i = 1。
【问题讨论】:
-
您需要使用更现代的编译器或打开一些警告。符号
register *a是过时的(20 多年来一直不鼓励使用)register int *a的书写方式。这很有趣;要编译int i;,您必须使用 C++ 或 C99 编译器,因为在 C89 中的语句之后不允许声明。注意你的编译器警告你什么(如果它没有警告你,打开警告或获得更好的编译器)。您必须使用 64 位计算机才能获得0, 1答案。