gpt4 book ai didi

c - 使用 gcc 编译器了解 Linux 中 C 语言中的指针

转载 作者:行者123 更新时间:2023-11-30 20:32:37 26 4
gpt4 key购买 nike

我正在linux中学习C并使用GCC编译器。我有下面一段代码来理解 C 中的指针。

int main(void)
{
int n;
/*long int z;*/
int a=1025;
int* p;
//int* ptr=&n;
p=&a;
n=sizeof(double);
//printf("\nAddress of n is =%p",&n);
printf("\nsize of integer is %d",n);
printf("\nAddress of a is =%p, value of a is= %d",&a,*p);
printf("\nAddress of a is =%p, value of a is= %d",p,*p);
printf("\nAddress of this location is is =%p, value at this location is= %d",(p+1),*(p+1));
}

输出

size of integer is 8
Address of a is =0x7ffd56375f90, value of a is= 1025
Address of a is =0x7ffd56375f90, value of a is= 1025
Address of this location is is =0x7ffd56375f94, value at this location is= 8

对于最后一个 printf 语句,为什么该值是 8。它不应该是一个垃圾值吗?

最佳答案

我的编译器为最后一个 printf 提供了这个

Address of this location is is =0xbfc283b8, value at this location is=    -1077771340

这就是垃圾。您正在尝试从 p+1 位置访问数据,我们不知道 p+1 位置有什么,如果该内存是为其他人保留的,您也可能会遇到段错误。所以我认为如果您取消引用未保留的内存,这是未定义的行为。

关于c - 使用 gcc 编译器了解 Linux 中 C 语言中的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47242033/

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