gpt4 book ai didi

澄清 C 中指针的左值、右值行为

转载 作者:太空宇宙 更新时间:2023-11-04 05:45:34 26 4
gpt4 key购买 nike

#include<stdio.h>

int main()
{
int i = 10;
int *p = &i;

printf("\n address of initialized pointer p: %u \n", p);
p = &(*p);
printf("\n modified address of initialized pointer p:%u value:%d valuez address: %d \n", p, *p, &(*p));

return 0;
}

代码输出:-

初始化指针p的地址:3221221820

修改后的初始化指针地址p:3221221820 value:10 valuez地址:-1073745476

为什么“&(*p)”在赋值语句和 printf 语句中使用时表现不同?

更新抱歉,只是 printf 中的格式说明符错误;)。感谢您的回复和指出。

最佳答案

您在 printf 中使用了不正确的格式说明符。使用 %d 打印地址将不起作用。而是使用 %p。 [打印地址的%u也不正确。]

This按预期工作。

关于澄清 C 中指针的左值、右值行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6138244/

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