C++ 指针:再与指针玩一玩

本文探讨了指针作为函数参数时的行为,解释了指针传递的是值(即地址),而非实际内容。通过示例代码展示了指针在函数内改变地址可能导致的后果,并引入了const关键字来限制指针的修改。接着,提到了引用的概念,强调其不可变的特性,以及作为函数参数时的便利性。最后,讨论了如何通过const关键字和引用实现更安全的代码实践。
摘要由CSDN通过智能技术生成

指针,本身是一个变量,它的值是另一个变量的地址。

指针作为函数的参数,是传值,值被参数复制!

参数作为一个变量,可以被重新赋值,与原来的值(地址)无关。

值是地址,地址是内存中固定的位置,相同地址的存储的内容 改变 会造成 实参存储内容的改变。

下面这个最简单的例子就说明了这个思想:

#include <iostream>
using namespace std;

void changeIt(int* p)
{
	*p+=10;
}

int main()
{
	int a=10;
	cout << a << endl;
	changeIt(&a);
	cout << a << endl;
}

形参是个独立的变量。玩一下,指针直接分配,程序没有毛病,偏离了交函数一个地址的初衷。

#include <iostream>
using namespace std;

void changeIt(int*p)
{
	p = new int;
	*p+=10;
}

int main()
{
	int a=10;
	cout << a << endl;
	changeIt(&a);
	cout << a << endl;
}

为了表达初衷,规定它不能指向别的,const。

#include <iostream>
using namespace std;

void changeIt(int* const p)
{
	//p = new int;
	*p+=10;
}

int main()
{
	int a=10;
	cout << a << endl;
	changeIt(&a);
	cout << a << endl;
}

我交给你的内容你也不能改变。

const int * const p;

允许指向不同,不允许改变内容 const int * p;

引用,是不允许改变指向的指针& = typename * const,不能改变指向,所以必须初始化,不能进行运算。然后简化使用形式。完美。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值