c++中指针赋值问题?

来源:百度知道 编辑:UC知道 时间:2024/05/09 09:07:15
在c++中可以给指针直接赋值吗?
例如
int *php=66;
我看书上说可以的,但是实际应用却不行;
不知道为什么,请前辈们详解!!!!

这么写肯定不行啊。
你首先应该知道指针到底是什么。指针就是保存某一个变量的地址的一种类型,换句话说,指针就是指向内存中的一块地址的变量。
我们定义指针可以这样:
int a; int *p = &a;
这一句就让指针p指向了a在内存中的位置。
int *p2 = 0;
这一句就让指针p2指向了0的位置(其实就是空)。
那么再看看你的那句。int *php = 66;你让指针php指向了内存中66的位置。这显然是不合法的。

也许你想问的还不仅仅是这个。还有一个疑问应该是这样:
int *php; *php = 66;
那我们再来看:
int a; int *p = &a; *p = 66;
这一句首先让p指向了a的位置,然后把值66放进了p指向的那块区域。
那么再看看新问题中的那句。先声明了php这个指针,然后马上把值66放到了它的位置——php指针指向哪个变量?答案是没有。那么既然php没有指向你程序中的任何一个变量,你把66的值放到它指向的位置,那么肯定也不合法。(实际上,声明php之后,php会有一个不确定的值。如果根据这个值去在内存中找位置,找到的位置很可能是你无权修改的。所以胡乱赋值不合法。)

指针指向的是一个变量而不是常量,所以你那要写是错误的.