gpt4 book ai didi

c - 为什么在这种情况下指针 var 的地址会改变?

转载 作者:行者123 更新时间:2023-11-30 19:54:33 25 4
gpt4 key购买 nike

所以,我正在关注“Let Us C”一书,他们有一个指针示例,你能解释一下为什么 ij 的值会改变吗在这种情况下?:

main( )
{

int i = 3, *j, **k ;
j = &i ;
k = &j ;

printf ( "\nAddress of i = %u", *k ) ;
printf ( "\nAddress of j = %u", &j ) ;

}

输出

Address of i = 65524
Address of j = 65522

我在C中理解新的变量声明,例如int i =3; int k=5 由 C 分配了不同的内存位置,我似乎无法理解为什么这会输出不同的值?

最佳答案

您需要 *k (与 i 的地址相同)和 &j (j 的地址)是一样的。它们是不同的类型 int * v/s int ** 和不同的值。

切勿使用 %u 来打印地址,而是使用:

printf ( "\nAddress of i = %p", (void *)*k ) ;

另一方面,如果比较 &jk,它们应该是相同的。

例如:

printf ( "%p v/s %p\n", (void *)&j, (void *)k);

关于c - 为什么在这种情况下指针 var 的地址会改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31701244/

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