gpt4 book ai didi

c - 1[&array] 是 &array[sizeof(array)/sizeof(array[0])] 的合适替代品还是太混淆了?

转载 作者:太空狗 更新时间:2023-10-29 17:18:59 28 4
gpt4 key购买 nike

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

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

关于c - 1[&array] 是 &array[sizeof(array)/sizeof(array[0])] 的合适替代品还是太混淆了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48822435/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com