c++中指针的问题,求解

来源:百度知道 编辑:UC知道 时间:2024/05/14 06:38:29
#include<iostream>
using namespace std;
int main()
{
int *p;
int x=37;
p=&x;
cout<<"*p="<<*p<<",x="<<x<<endl;//*1
*p=58;
cout<<"*p="<<*p<<",x="<<x<<endl;}//*2
为什么第2次输出连x都是58??请详解!!

p=&x; 这里将指针指向了x;
在p的内存单元里存放的是变量x的地址。

*p=58; 这条语句等价于x=58;
所以第2次输出连x都是58。

*p为解引用(注意混淆定义指针的语法)
当p=&x;
后*p即为x

对p赋的值是变量x的地址,当对*p赋值时就是对x赋值(以p的值作为地址向这个地址赋值)

因为p是一个指针,存放的是的x地址(p=&x),x是地址传递,非值传递.改了*p的值就等与改了x的值.