C++指针*和引用&辨别实验

对C++的指针和引用进行了一个对比实验

// 指针和取址.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
using namespace std;

 void Add1(int* i)//传入的是一个指针,i的值是一个地址
{
    cout << ++i << endl;//地址加1,外部实参不改变
}
 void Add2(int& i)//传入的是一个引用变量,
{
    cout << ++i << endl;//值
}

 void Add3(int*& i)//传入的参数是一个指针,但是在式子中对这个指针进行了引用
{
    cout << ++i << endl;//所以外部实参会跟着改变
}

 void Add4(int* i)
 {
     cout << i << endl;
     (*i)++;//指针指向的值加一,外部实参会跟着改变
 }

int main()
{
    int a = 124;
    //&a表示a在内存中的地址。取址操作符
    cout << "a: " << a << endl << "a's address:" << &a << endl;
    //定义一个p指针,指向a所在的地址,将a的地址赋值给p
    int* p = &a;
    cout << "p: " << p << endl;
    //声明p之后,在p之前添加*表示p指向的内存存储的值
    cout << "*p's value: " << *p << endl;
    //同时p也是一个指针变量,p在内存中也有一个地址存储他,
    cout << "p's address: " << &p << endl;
    //*&p &p是一个内存地址,*&p表示&p指向地址内存空间的值,这里是a的地址
    cout << "*&p: " << *&p << endl;
    //**&p 就是a的值
    cout << "**&p" << **&p << endl;
    Add1(&a);
    cout << "形参为*i,实参为&a,为a的地址直接加1: " << a << endl;
    Add2(a);
    cout << "形参为&i,实参为a,直接加1:" << a << endl; 
    Add3(p);
    cout << "形参为*&i,实参为a的指针p,必须是一个变量不能取址,直接加1:" << a << endl;
    cout << "p:" << p << endl;//发现p指针存储的已经不是a的地址了,如果下面再用*p程序将可能出错
    Add4(&a);
    cout << "形参为*i,实参为a的dihi,地址指向加1:" << a << endl;
}

实验结果
实验结果截图如上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值