针对指针变量,特别链表的一些变量具体存储了些什么东西,给出我们的分析与解释
工具:VS2019 语言:C语言
指针变量的地址与存储
第一步我们要知道如何输出指针变量自己的地址
/*
如果你想要打印指针指针p本身的地址,而不是它所指向的地址,
你可以使用&p来获取p指针的地址,并使用%p来打印它
*/
printf("p指针变量的地址:%p\n", &p);
接下来我们用一段程序来演示一下指针变量与指针变量存储的内容之间的关系
int a = 10;
int* p = &a;
printf("a的地址为%d,a的值为%d, p的地址为%p,p的值为%d\n", &a, a, &p, p);
输出结果
a的地址为1945106884,a的值为10, p的地址为000000A173EFF9E8,p的值为1945106884
我们可以发现a的地址和p的值是一样,这就可以解释了p存储的地址与a地址之间的关系
接下来我们还要对%p进行一个深入分析
printf("a的地址为%p,a的值为%d, p的地址为%p,p的值为%d\n", &a, a, &p, p);
为了便于我们观察,我们将这些数据输出为二进制
我们发现a的地址和p的值出现了问题,这是为什么呢?为什么转换为二进制输出不同
我想给你两篇文章先铺垫一下: