c++引用

C++的引用

(1)      概念:在c++中,引用的意思就是引用可以看作一个已定义变量的别名。

(2)      语法:int a = 10; int &b = a; (意思是b引用a,这个时候a和b代表同一块地址,并且有一样的数据)

(3)      例子:(普通引用)

#include <stdio.h>
int main()
{
	int a = 10;
	int &b = a;
	printf("a = %d, b = %d\n", a, b);
	printf("a = %p, b = %p\n", &a, &b);  //输出的地址和数据都是一样的

	return 0;
}

(4)      例子:(指针引用)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct student
{
	int id;
	char name[20];
};

void func1(student **msg)   //c语言中指针的传递用二级指针来接收
{
}

void func2(student * &msg)  //c++中可以用指针引用来接收
{
	msg = (student *)malloc(sizeof(student));
	msg->id = 123;
	strcpy(msg->name, "wang");
}

int main()
{
	student *msg = NULL;
 	// func1(&msg);
	func2(msg);   //在指针引用中,函数参数可以直接填指针变量名,不用加取地址符号

	printf("id = %d, name = %s\n", msg->id, msg->name);

	return 0;
}

(5)      例子:(常引用)

#include <stdio.h>

int main()
{
	int b = 10
	const int &a = b;  //常引用中前必须加const,让变量a拥有只读属性,不能通过a改变b的值

	int *p = (int *)&a; //虽然不能通过a来改变b的值,但是可以通过指针来改变值

	printf("*p = %d, a = %d\n", *p, a);
	*p = 200;
	printf("*p = %d, a = %d\n", *p, a);

	const int &c = 10; //用常量去初始化常引用,C++编译器把c放在符号表中
 
 	// int& b = 41;     普通引用,引用一个常量,常量是没有地址空间的,这样的做法是不合法的
 
 	// 使用常量去初始化常引用是合法的,C++编译器会为该引用分配空间,常量的值存储到分配的空间中去,使用常量对 const引用 初始化后,将生成一个只读变量
	
	printf(“c = %d, c = %p\n”, c, &c);
	return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值