Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中有趣的类型错误_C_Compiler Errors - Fatal编程技术网

C语言中有趣的类型错误

C语言中有趣的类型错误,c,compiler-errors,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

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

请帮助我,我很困惑。

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

您可能正在考虑scanf,您需要&

(此时的解释可能太长,请等到您熟悉指针后再进行解释)

&
采用
num
的地址。使用

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

只是稍微推断一下。。。int和int*之间的区别在于int*是指向int的指针。这意味着它实际上并不包含int值,而是包含指向int值的地址