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];

无论您做什么,都请使用临时变量,因为您可以使用描述性名称对其进行命名。这将使代码读取速度更快,而不会影响运行时性能(除非编译器很死)。

09-03 20:51