C++引用以及结构体

2023年2月2日09:25:24

计算机考研机试笔记之C/C++基础6

C++引用

  1. 引用在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的操作。
    注意:
    要把引用的&跟取地址运算符&区分开来,引用并不是取地址的意思。

  2. 指针的引用
    在指针相关一文中提到的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 作者总结的比较用心。

结构体

  1. 结构体定义
    可以将若干不同数据类型的数据封装在一起,可以用来储存复合数据。可以将若干不同数据类型的数据封装在一起,可以用来储存复合数据。

    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]为结构体数组变量
    
  2. 访问结构体中的元素

    方式一:

    Jhon.name
    Jhon.gender
    Jhon.age
    

    方式二:

    Jhon->name
    Jhon->gender
    Jhon->age
    
  3. 结构体初始化
    使用构造函数初始化

    #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;
    }
    
  • 作者:shenhai_
  • 原文链接:https://blog.csdn.net/shenhai_/article/details/88128094
    更新时间:2023年2月2日09:25:24 ,共 1956 字。