c/c++指针

程序一:

#include "stdafx.h"

#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{


   int a=200,b=400;
   int  *p1=&a, *p2=&b;
        p1=p2;
    cout<<"a="<<a<<endl;
    cout<<"b="<<b<<endl;
    cout<<"*p1="<<*p1<<endl;    //p1所指地址上的值
cout<<"*p2="<<*p2<<endl; //p2所指地址上的值
cout<<"p1="<< p1<<endl;  // p1所指地址
cout<<"p2="<< p2<<endl; //p2所指地址
     return 0;

}

个人理解:&为取地址符号,*为取值符号, int *p=&a  分两步运算,首先p=&a,代表p取a得地址,再计算*p,*p取地址                     上的值

                   程序一中,p2赋给p1,即p1与p2是相同的地址,*p1改为指向b的地址 所以输出结果为:


程序2:

#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{


   int a=200,b=400;
   int  *p1=&a, *p2=&b;
        *p1=*p2;
    cout<<"a="<<a<<endl;
    cout<<"b="<<b<<endl;
    cout<<"*p1="<<*p1<<endl;   //p1所指地址上的值
cout<<"*p2="<<*p2<<endl; //p2所指地址上的值
cout<<"p1="<< p1<<endl; // p1所指地址
cout<<"p2="<< p2<<endl; //p2所指地址
     return 0;
}

程序二中,*p1,*p2代表地址上的值,*p2赋给*p1代表*p1的值发生了变化,但所指的地址没有改变,*p1还是指向a,所以二者的值会同时改变,程序输出结果为:


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值