C中有趣的类型错误

时间:2014-03-29 22:37:44

标签: c compiler-errors

我正在用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]

但看起来真的很傻,intint *之间的区别是什么?如果num不是num,我如何打印{{1}}? 请帮忙我很困惑。

3 个答案:

答案 0 :(得分:2)

&获取num的地址。使用

printf("%d\n",num);

答案 1 :(得分:0)

首先,它只是一个警告(一个好的,但你可以运行程序) 如果你这样做,你会看到一些奇怪的数字,
因为你打印变量的内存地址 删除&以打印值(并删除警告)

你可能想到了scanf,你需要&
(此时的解释太长,等到你熟悉指针)

答案 2 :(得分:0)

只是推断一点...... int和int *之间的区别在于int *是指向int的指针。这意味着它实际上不包含int值,它将地址保存为int值。