1 [&array]是&array [sizeof(array)/ sizeof(array [0])]的正确替换,还是太混淆了?

not*_*tan 6 c arrays

C没有elementsof关键字来获取数组的元素数.所以这通常被计算所取代,sizeof(Array)/sizeof(Array[0]) 但这需要重复数组变量名. 1[&Array]是指向数组后面的第一个元素的指针,因此您可以使用:

int myArray[12] = {1,2,3};  
int *pElement;

for (pElement = myArray; pElement < 1[&myArray]; pElement++)
{
  ...
}
Run Code Online (Sandbox Code Playgroud)

取代:

for (pElement = myArray; pElement < &myArray[sizeof(myArray)/sizeof(myArray[0])]; pElement++)
{
  ...
}
Run Code Online (Sandbox Code Playgroud)

你认为这太混淆了吗?

use*_*733 5

1[&myArray]是不明显的.我建议你使用临时变量:

size_t count = sizeof array / sizeof *array;
int * const end = &array[count];
for (pElement = myArray; pElement < end; pElement++)
Run Code Online (Sandbox Code Playgroud)

或者更确切地说使用标准索引变量:

size_t count = sizeof array / sizeof *array;
for(size_t i=0; i<count; ++i) {
    int *pElement = &array[i];
Run Code Online (Sandbox Code Playgroud)

你做了什么,使用临时变量,因为你可以描述性地命名它们.它将使代码读取速度更快,而不会影响运行时性能(除非编译器是脑后的).