请看下面的代码片段 -了解警告和编译错误,而初始化和声明指针变量
int main(){
int *i_ptr = 5;
printf("%d", *i_ptr);
return 0;
}
在这里,我想声明和初始化变量i_ptr
的指针。它给了我下面的警告,而它编译罚款 -
警告:初始化时将整数指针不进行强制转换 [默认启用]
但是,当我要执行的代码它给我下面的错误 -
分割故障(核心转储)
我知道正确的方式来做到这一点 -
int n = 5;
int *ptr = &n;
现在我有一些问题 -
虽然第一代码在执行时失败,为什么不给编译错误,而不是警告?
2.我们可以初始化和声明指针变量这样的 - 事先
int n = 5 // both declaration and initialization of int type variable n
感谢。
'INT * i_ptr = 5'装置的地址,该地址的不是内容,被5.一点也没有”因为5是有效的地址,所以发出错误。 – m0skit0 2015-04-01 18:40:56
“我们可以初始化并声明指针变量吗?” - 是的,你已经知道它:'int * ptr =&n;' – immibis 2015-04-01 18:45:35
你可能想要的是'int * i_ptr = new int(5);' – vsoftco 2015-04-01 18:46:36