- 引用在C++编程中极为实用。
函数的参数是属于局部变量,如果想要修改传入的参数,那就要用到指针。
在C++中,还可以使用“引用”。引用不会产生副本,相当于给原来的变量又取了个别名,二者其实都是指同一个东西,且对引用变量的操作就是对原变量的操作。
引用的使用方法很简单,只需要在函数的参数类型后面加个&就可以了(或者&加在变量前面即可)。#include <iostream> using namespace std; int main() { int a = 10; cout << a << endl; int &b = a; b = 23; cout << a << endl; return 0; }
输出:
10 23
可见,程序中对a的引用b的操作,也是对变量a的操作。
注意:
要把引用的&跟取地址运算符&区分开来,引用并不是取地址的意思。 - 指针的引用
在指针相关一文中提到的swap(),还可以通过将传入的地址交换来达到交换两个变量的效果。使用引用可以达到这种操作,如下:#include <iostream> using namespace std; //将 int* 型变量的引用作为参数, //相当于对原int*变量的操作 void swap(int* &p1,int* &p2){ int *temp = p1; p1 = p2; p2 = temp; } int main() { int a = 10,b = 23; int *p1 = &a,*p2 = &b; //p1 p2为指针变量,存放a b的地址 cout << *p1 << " " << *p2 << endl; swap(p1,p2);//函数参数为a b的地址,类型为int* cout << *p1 << " " << *p2 << endl; return 0; }
10 23 23 10
为了理解上的方便,可以“简单”地把int*型理解成unsigned int型,而直接交换这样的两个整型变量是需要加引用的。
注意:
引用是产生变量的别名,因此常量不可使用引用。于是上面的代码中不可以写成swap(&a,&b),而必须用指针变量pl和p2存放&a和&b,然后把指针变量作为参数传入。
另外,如果想要深入了解引用,我推荐一篇文章:https://blog.csdn.net/JayRoxis/article/details/73060770 作者总结的比较用心。
-
结构体定义
可以将若干不同数据类型的数据封装在一起,可以用来储存复合数据。可以将若干不同数据类型的数据封装在一起,可以用来储存复合数据。struct Name{ //自定义的数据结构 };
struct person{ char name[10]; char gender; int age; }; person Jhon,Harry,students[10];
struct person{ char name[10]; char gender; int age; }Jhon,Harry,students[10]; //Jhon,Harry为结构体变量,students[10]为结构体数组变量
struct person{ char name[10]; char gender; int age; person* father;//结构体内可以定义结构体本身的指针类型的指针变量 }Jhon,Harry,students[10]; //Jhon,Harry为结构体变量,students[10]为结构体数组变量
-
访问结构体中的元素
方式一:
Jhon.name Jhon.gender Jhon.age
方式二:
Jhon->name Jhon->gender Jhon->age
-
结构体初始化
使用构造函数初始化#include <iostream> #include <string.h> using namespace std; struct person{ char name[10]; char gender; int age; person(char* name_,char gender_,int age_){ strcpy(name,name_); gender = gender_; age = age_;} }; int main() { person a("green",'F',20); cout << a.name << " " << a.gender << " " << a.age << endl; return 0; }
在创建时,自行初始化
#include <iostream> #include <string.h> using namespace std; struct person{ char name[10]; char gender; int age; }; int main() { person a; strcpy(a.name,"white"); a.gender = 'M'; a.age = 21; cout << a.name << " " << a.gender << " " << a.age << endl; return 0; }
上一个:养猫容易生病吗(养猫容易生病吗)
热门文章
- 三国杀武将展示图高清(三国杀全部武将高清图片群)
- 宠物店需要办什么证件(开一家宠物店大概需要投资多少钱)
- BeanDefinitionRegistryPostProcessor和BeanFactoryPostProcessor以及BeanPostProcessor执行先后顺序
- Spring Boot的依赖配置文件的解析
- Eclipse开发Java如何Debug详解
- 上海宠物领养日期查询网(上海宠物领养网站)
- MySQL NOW()和SYSDATE()有什么区别?
- 上海宠物繁殖基地(上海最大的宠物基地)
- 动物疫苗定义标准是什么(动物疫苗的了解)
- 2月21日|Shadowrocket/Clash/V2ray/SSR每天更新21.5M/S免费节点订阅链接地址分享