gpt4 book ai didi

c - *argv++ 和 *argv-- 到达限制时的区别

转载 作者:太空宇宙 更新时间:2023-11-04 03:56:32 26 4
gpt4 key购买 nike

谁能解释一下原因

int main(int argc, const char * argv[]) {
while (* argv)
puts(* argv++);
return 0 ;
}

是合法的,并且

int main(int argc, const char * argv[]) {
argv += argc - 1;
while (* argv)
puts(* argv--);
return 0 ;
}

不是吗?在这两种情况下,while 循环内的 'crement 将指向 argv 的边界之外。为什么指向虚数较高的索引是合法的,而不是虚数较低的索引?

最好的问候。

最佳答案

因为 C 标准说你可以形成一个指向数组末尾的指针,它仍然会正确地与指向数组的指针进行比较(尽管你不能取消引用它)。

对于指向数组开头之前的地址的指针,标准没有说明任何此类内容——即使形成这样的指针也会产生未定义的行为。

关于c - *argv++ 和 *argv-- 到达限制时的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16023069/

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