引用符&的简单介绍

简介:

使用&可以为变量取别名

如:

int a=1;

int& b=a;

则输出b和输出a是一样的,它们指向同一块空间,修改b也会把a的值也修改了

注意:
1.     一个变量可以取好几个别名

        如:

        int a=1;

        int&b=a;

        int &c=a;

        int&d=c;

        c=5;

        修改任意一个会让abcd的值改变,是同一块空间

2.     必须在定义时初始化

        可以这样:

        int&b=a;

        不能这样:

        int&b;

        b=a;

3.     引用一旦引用了一个实体就不能在引用其他实体

        int&b=a;

        那么b就只为a服务,不能再成为其他玩意儿的别名了

4.这种情况不能取别名

        

        const int m=1;

        int &n=m;

        const把m的权限设置为只读不写,所以通过取别名来修改m是不行的

高级操作:

C语言用指针苦不堪言的传地址才能改参数?

不妨试试引用:

void swap(int& a, int& b)     //a成了x的别名,b成了y的小名

{
	int temp;
	temp = a;
	a = b;
	b = temp;
}

int main()
{
	int x = 1;
	int y = 2233;
	swap(x, y);
	cout << x << "   " << y;
}

当然,指针也可以

//定义一个结构体
typedef struct a
{
	int val;
	struct a* next;
}test;

//处理结构体的函数
void changeVal(test*& pt)  //这里对传过来的指针取别名
                           //并使用别名直接对传过来参数本尊直接修改,无需二级指针
{
	pt->val = 1;
}



int main()
{
	test teststruct;
	test* ptest=&teststruct;
	changeVal(ptest);
	cout << ptest->val << "  ";
}

另外,这里的typedef还可以这样搞一下

typedef struct a
{
	int val;
	struct a* next;
}test,*TEST;      //相当与把sutruct a简化为test ,把struct a* 简化为了TEST

void changeVal(TEST& pt)      //这个地方也就被简化了
{
	pt->val = 1;
}

int main()
{
	test teststruct;
	test* ptest=&teststruct;
	changeVal(ptest);
	cout << ptest->val << "  ";
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值