gpt4 book ai didi

c - 指针运算和地址

转载 作者:太空宇宙 更新时间:2023-11-04 06:04:42 25 4
gpt4 key购买 nike

我遇到过这样的代码:

#include <stdio.h>

int main(void)
{
int a[5] = { 1, 2, 3, 4, 5};
int *ptr = (int*)(&a + 1);
int *ptr2 = (int*) &a;
ptr2 +=1 ;
printf("%d %d %d \n", *(a + 1),*(ptr - 1) ,*ptr2 );
return 0;
}

除了这一行,指针算法为我完成了:

int *ptr = (int*)(&a + 1);

这是未定义的行为吗?为什么我们在取消引用 *(ptr - 1) 时得到 5

最佳答案

a 的大小是“5 ints”。所以 &a + 1 指的是第一个内存位置 past 所有 a,因为指针算法是以 的大小为单位完成的>一个

关于c - 指针运算和地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12623821/

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