您的位置:首页 > 编程语言 > C语言/C++

C++ 引用基础

2016-06-13 23:13 337 查看
//引用
#include<iostream>

using namespace std;

struct Student{
char name[30];
int age;
};

struct Teacher{
int &at2;
int &bt2;
};

int GetNum(Student &s2){
s2.age = 19;
return s2.age;
}

void main(){
int a = 10;//编译器分配4个字节的内存,变量名a就是内存空间的的标识

//引用概念
//在C++中新增加了引用的概念,C语言中没有引用的概念
//引用可以看作一个已定义变量的别名
//引用的语法:Type& name = var;
//引用做函数参数那?(引用作为函数参数声明时不进行初始化)

//int &b1;
//报错 error C2530: “b1”: 必须初始化引用
//说明:引用定义的时候必须赋初始值

int &b = a;//b是a的别名  变量b也是a对应内存空间的标识

//a的三种赋值方式
a = 11;//①直接赋值
printf("a=%d\n",a);
{
//②间接赋值
int *p = &a;
*p = 12;
printf("a=%d\n", a);
}
//③引用赋值
b = 13;
printf("a=%d\n", a);

//结构体引用
Student s1;
s1.age = 12;
//定义s1的引用
Student &s2 = s1;
s2.age = 17;
//直接引用
printf("直接引用--学生的年龄是%d\n", s1.age);
//间接引用
printf("间接引用--学生的年龄是%d\n", GetNum(s1));

//引用的本质
printf("结构体Teacher的大小是%d\n", sizeof(Teacher));//打印8
//说明 int &bt2;  占据4个字节大小的内存空间

//引用的本质
//1)引用在C++中的内部实现是一个常指针
//Type& name <-->  Type* const name
//2)C++编译器在编译过程中使用常指针作为引用的内部实现,因此引用所占用的空间大小与指针相同。
//3)从使用的角度,引用会让人误会其只是一个别名,没有自己的存储空间。这是C++为了实用性而做出的细节隐藏
system("pause");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: