C语言中有趣的类型错误
我正在用C写一个程序,我是一个完全的初学者,用来寻找素数。我的问题是,当我将一个变量初始化为int类型时,就像这样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
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值的地址