gpt4 book ai didi

c - 为什么指向一个超出有效对象的位置对于指针来说是可以接受的?

转载 作者:行者123 更新时间:2023-12-03 15:18:45 24 4
gpt4 key购买 nike

在 Jens Gustedt 的教科书“现代 C”中,我读到了“指针必须指向有效对象或超出有效对象的一个​​位置或为空”的指针。为什么指向一个有效对象之外的位置是可以接受的?例如。:

int array[5] = {0};
int* p = array;
p = array + 5 // points to a valid location
p = array + 6 // points to an invalid location

最佳答案

支持“超越最后一个”使使用数组变得更简单。例如,如果使用指针 Start 调用函数对于某些元素,它可能需要准备一个结束指针 End并使用循环,例如:

for (ElementType *p = Start; p < End; ++p)
为此, End必须是有效的指针。
我们可能会考虑改为设置 End成为要处理的最后一个元素,而不是超出它的一个元素,并使用:
for (ElementType *p = Start; p <= End; ++p)
但是,请注意,在处理完最后一个元素之后, p将增加到 超越 End .然后,为了 p <= End成为有效的表达式, p必须是有效的指针。因此,我们需要能够对数组的最后一个元素进行地址算术运算。

关于c - 为什么指向一个超出有效对象的位置对于指针来说是可以接受的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63054731/

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