为什么C++中不允许这样定义呢?int *p=6;?

2025-04-28 05:06:39
推荐回答(4个)
回答1:

int *p这样是定义一个指针,初始化时赋值的话实际上是为指针p赋值。而6是一个int,不是int *。
int *p = NULL;
*p = 6;
是可以的。这个是将p设置为指向6所在的内存地址。
============
应该先为p分配空间。
#include

int main(int argc, char *argv[])
{
int *p = (int *)malloc(sizeof (int));
*p = 6;

printf("%X %d\n", p, *p);

return 0;
}

回答2:

因为类型不匹配

编译过不去

编译器只做类型检查

回答3:

6 是 const int
不能转化为 int*
下面写法可以编译通过。但是给指针一个数值没有意义。
int * pp = (int*)6;

回答4:

等号后要求是地址,而地址一般以16进制数表示,这样随便写个数,可能会无意进入系统的内存空间,为保护,故不允许。