我正在用C编写一个程序,我是一个完全初学者,用于查找素数。我遇到的问题是,当我将变量初始化为int类型时,这样......
int num;
然后发生了一些事情
blah blah blah
但没有任何事情发生在num,它保留在保留状态,仅用于修改其他变量。
然后当我尝试
printf("%d",&num);
用gcc编译它会给我这个错误
warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat]
但看起来真的很傻,int
和int *
之间的区别是什么?如果num
不是num
,我如何打印{{1}}?
请帮忙我很困惑。
答案 0 :(得分:2)
&
获取num
的地址。使用
printf("%d\n",num);
答案 1 :(得分:0)
首先,它只是一个警告(一个好的,但你可以运行程序)
如果你这样做,你会看到一些奇怪的数字,
因为你打印变量的内存地址
删除&
以打印值(并删除警告)
你可能想到了scanf,你需要&
(此时的解释太长,等到你熟悉指针)
答案 2 :(得分:0)
只是推断一点...... int和int *之间的区别在于int *是指向int的指针。这意味着它实际上不包含int值,它将地址保存为int值。