gpt4 book ai didi

c - 数组的元素是否保证从低地址到高地址存储?

转载 作者:太空狗 更新时间:2023-10-29 15:45:58 25 4
gpt4 key购买 nike

假设我有以下数组:

int list[3]={2,8,9};
printf("%p,%p,%p",(void*)&list[0],(void*)&list[1],(void*)&list[2]);

是否始终保证 &list[0]<&list[1]<&list[2]

在使用 C 时,我曾假设这是一个硬性规定,但现在必须非常确定,因为当我回答他关于 endianness 的问题时,OP 刚刚问了我这个问题

Little endian or Big endian

让我重新考虑的是堆栈可以向上或向下增长问题。我对此不是很确定,因此感谢您的严谨回答。谢谢。

最佳答案

是的,保证&list[0]<&list[1]&list[1]<&list[2] .当比较指向同一数组元素的指针时,指向具有较大下标的元素的指针将被认为具有较大的值。这是在 C99 6.5.8@5 中指定的:

pointers to array elements with larger subscript values compare greater than pointers to elements of the same array with lower subscript values

但是,不能保证 printf 用 %p 打印的值也将遵循相同的顺序 - 这些值是实现定义的。

关于c - 数组的元素是否保证从低地址到高地址存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16397175/

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