gpt4 book ai didi

c - 如何打印内存地址?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:26:56 24 4
gpt4 key购买 nike

我在 youtube 教程中看到有关指针的内容,人们 printf 变量的内存地址。有问题的视频在 Code:Blocks 中执行此操作,并且它在 %p 中工作,但每当我在 Geany (VirtualBox) 中尝试完全相同的操作时,我都会遇到编译错误。我应该尝试另一种 %letter Linux 吗?

      int main(int argc, char *argv[]){
int var;

printf("%p\n", &var);

return 0;
}

我不需要它来练习什么,只是出于好奇(我想是为了更好地理解指针的概念)。提前致谢!

编辑:错误消息是 Linux 要我在打印之前将 &var 转换为 (void*)。抱歉,我不是很清楚:我的问题基本上是,这是 Linux/Windows 的事情吗?为什么 Windows 按原样接受它,而 Linux 要我将它转换为 void 指针?

error message:

最佳答案

%p 说明符需要一个 void*,而您给它一个 int*。所以就投它吧:

printf("%p\n", (void*)&var);

如果这是一个普通函数,从 int * 到 void * 的转换将是自动的,不会产生警告。但由于 printf() 是可变参数函数,转换必须是显式的。可变参数函数的参数不需要进行类型检查。但是,一些编译器知道标准函数(包括 printf())的工作原理,并且会在不正确的用法时发出警告。

关于c - 如何打印内存地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40002778/

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