为什么我不能直接将int赋值给int指针,比如:int *p = 6;?

7

错误:从'int'到'int *'的转换无效
int *q = 8;

这很好。
*q = 6;

为什么我不能直接像这样将int分配给int指针:int *q = 6,而我可以在下一行安全地分配它?


初始化与赋值 - pmg
2
尽量不要编写多语言源文件。这样做非常困难,而且结果并不完全符合所选的任何一种语言。 - pmg
7
不能!指针没有初始化,你不能对它进行解引用操作。我无法在下一行安全地分配它。 - Ajay Brahmakshatriya
@FelixPalmen 是的,它也应该是被接受答案的一部分。 - Ajay Brahmakshatriya
3
考虑到这篇文章的回答更多,得分也更高,相比之下重复的那篇文章应该被关闭并指向这篇文章,而不是关闭这篇文章。 - Bernhard Barker
显示剩余2条评论
13个回答

-1
如果你这样重新编写它:
int* q = 8; 
    *q = 6;

然后你可以看到*有两个不同的用途。


这段代码在符合C编译器上无法编译。 - Lundin

-1

试一试

int *q = new int(8);

但在这里使用指针通常是不必要的。如果必须使用指针,请使用智能指针shared_ptr<int>uniqe_ptr<int>


-1
在这种情况下,您正在向指针*q分配值8,但在初始化期间它不会起作用,此时内存地址是唯一的,无法分配,但是在初始化后创建内存块后,可以为*q设置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接