C没有elementsof
关键字来获取数组的元素数。
所以通常用计算sizeof(Array)/sizeof(Array[0])
代替
但这需要重复数组变量名。1[&Array]
是指向数组之后第一个元素的指针,因此
您可以使用:
int myArray[12] = {1,2,3};
int *pElement;
for (pElement = myArray; pElement < 1[&myArray]; pElement++)
{
...
}
取代:
for (pElement = myArray; pElement < &myArray[sizeof(myArray)/sizeof(myArray[0])]; pElement++)
{
...
}
您认为这太混淆了吗?
最佳答案
1[&myArray]
不明显。我建议您使用临时变量:
size_t count = sizeof array / sizeof *array;
int * const end = &array[count];
for (pElement = myArray; pElement < end; pElement++)
或仅使用标准索引变量:
size_t count = sizeof array / sizeof *array;
for(size_t i=0; i<count; ++i) {
int *pElement = &array[i];
无论您做什么,都请使用临时变量,因为您可以使用描述性名称对其进行命名。这将使代码读取速度更快,而不会影响运行时性能(除非编译器很死)。