指针实例

指针的经典应用函数

void MySwap(int *x,int *y)
{
    int temp=*x;
    *x=*y;
    *y=temp;
}

主函数

int main()
{
    int a=1;
    int b=2;
    int c=3;

    int *x=&a;//指针类型要和变量类型相同
    cout<<"&x:"<<&x<<"  x:"<<x<<"    *x:"<<*x<<endl;
    int *y;
    y=&a;//变量名为y, *y为数值, *为取内容
    cout<<"&y:"<<&y<<"   y:"<<y<<"    *y:"<<*y<<endl;

输出为
&x:0x6dfed8 x:0x6dfee0 *x:1
&y:0x6dfed4 y:0x6dfee0 *y:1

(此处有图)

由此可以看出:
(1)声明指针的时候会为指针开辟空间
(2)两个指针的地址不同,但是可以指向同一个地址区域
(3)x=&a 可以象征性的看作普通变量把其地址赋给了指针变量

为了研究值传递,将上个代码块的 y=&a 转换为 y=&b,之后带入函数MySwap

    MySwap(x,y);
    cout<<"MySwap:"<<endl;
    cout<<"&x:"<<&x<<"  x:"<<x<<"    *x:"<<*x<<endl;
    cout<<"&y"<<&y<<"   y:"<<y<<"    *y:"<<*y<<endl;
    cout<<"&a:"<<&a<<"    a:"<<a<<endl;
    cout<<"&b:"<<&b<<"    b:"<<b<<endl;

输出结果为
MySwap:
&x:0x6dfed8 x:0x6dfee0 *x:2
&y0x6dfed4 y:0x6dfedc *y:1
&a:0x6dfee0 a:2
&b:0x6dfedc b:1

(此处有图)

由此可知
(1)a,b值的改动是通过地址而操纵的。类似对于数组int a[N]来说,若有函数Meow(int a[]);其中有改变数组a中数据的操作 ,函数执行结束之后,对数组的改变依然存在。因为main()函数中调用语句为Meow(a); 由数组的存储方式可知,此处的a为首地址。

    MySwap(&a,&b);
    cout<<"MySwap:"<<endl;
    cout<<"&x:"<<&x<<"  x:"<<x<<"    *x:"<<*x<<endl;
    cout<<"&y"<<&y<<"   y:"<<y<<"    *y:"<<*y<<endl;
    cout<<"&a:"<<&a<<"    a:"<<a<<endl;
    cout<<"&b:"<<&b<<"    b:"<<b<<endl;

输出结果为
MySwap:
&x:0x6dfed8 x:0x6dfee0 *x:1
&y0x6dfed4 y:0x6dfedc *y:2
&a:0x6dfee0 a:1
&b:0x6dfedc b:2

由此可知:
(1)再次得知,x=&a 可以象征性的看作普通变量把其地址&a赋给了指针变量x

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值