C++ 학습에 대한 자세한 설명(포인터, 참조, 구조)

1 소프트웨어 컴파일

비주얼 스튜디오

2 기본문법

2.1 포인터

2.1.1 포인터 사용

//定义一个指针
    int a = 10;
    int * p;
    //让指针记录变量a的地址
    p = &a;
    cout << "a的地址:" << &a << endl;
    cout << "p:" << p << endl;
    cout << "p:" << *p << endl;
    //使用指针
    //可以通过解引用的方式来找到指针
    *p = 1000;
    cout << "a的地址:" << a << endl;
    cout << "p:" << *p << endl;

2.1.2 포인터 메모리

32비트 OS에서는 4바이트, 64비트 OS에서는 8바이트를 차지합니다.

64비트로 변경 후 포인터의 메모리는 8비트

2.1.3 널 포인터

포인터 변수는 포인터 변수를 초기화하기 위해 메모리의 0번 공간을 가리키며, 널 포인터가 가리키는 메모리는 접근할 수 없다.

    //定义一个指针 指针变量指向内存地址为0的空间
    int * p = NULL;
    //访问空指针报错 内存编号为0-255为系统占用 不允许用户访问
    *p = 100;
    cout << "p:" << p << endl;
    cout << "*p" << *p << endl;

2.1.4 필드 포인터

포인터 변수가 잘못된 메모리 공간을 가리킴

널 포인터도 와일드 포인터도 우리가 적용한 메모리 공간이 아니며 둘 다 액세스할 수 없습니다.

2.1.5 const 수정 포인터

const 수정 포인터: 상수 포인터

포인터의 포인팅 수정 가능 포인터가 가리키는 값 수정 불가

const 수정 상수: 포인터 상수

포인터의 포인팅은 수정할 수 없지만 포인터가 가리키는 값은 수정할 수 있습니다.

const는 포인터와 상수를 모두 수정합니다.

포인터도 포인터가 가리키는 값도 수정할 수 없습니다.

2.1.6 포인터와 배열

2.1.7 포인터와 함수

Pass by value : 실제 매개변수를 변경하지 않음

주소 전달 : 실제 매개변수의 값이 수정됩니다.

2.2 구조

2.2.1 구조체 정의 및 생성

사용자가 다양한 데이터 유형을 저장할 수 있는 사용자 정의 데이터 유형

여러 가지 생성 및 사용 방법, struct는 구조체 객체 생성 시 생략 가능하나 정의 시 생략 불가

2.2.2 구조 배열

사용자 지정 구조를 배열에 넣습니다.

2.2.3 구조 포인터

멤버를 호출하는 객체는 멤버가 힙에 있는지 스택에 있는지에 따라 "." 또는 "->"를 사용하고 힙에서 ->를 사용하고 스택에서 .을 사용합니다.

2.2.4 구조 중첩 구조

Teacher에서 학생 구조를 사용하려면 먼저 학생 구조를 생성해야 합니다.

2.2.5 함수 매개변수로서의 구조

주소이전에서도 main함수의 값이 변하고, 값이동에서는 Main함수의 값이 변하지 않음을 알 수 있다.

2.2.6 구조체의 Const 사용 시나리오

함수의 형식 매개변수를 포인터로 변경하면 메모리 공간이 줄어들고 새 복사본이 만들어지지 않습니다. 그러나 실제 매개변수의 데이터가 수정되는 것을 방지하기 위해 데이터 앞에 const를 추가하면 실제 매개변수가 수정되지 않도록 문제를 해결할 수 있습니다.

2.3 참고문헌

역할: 별칭 변수 데이터 유형 & 별칭 = 원래 이름

참조와 원래 이름은 동일한 메모리를 가리킵니다.

2.3.1引用的注意事项

1 引用必须初始化

2 初始化后不能被改变

2.3.2引用作函数参数

函数传参时,可以利用引用让形参修饰实参,简化指针修改实参

在值传递中,不能改变实参的值,地址传递可以改变实参,引用传递也可以。

2.3.3引用作函数的返回值

引用的本质是一个指针常量,指针的指向不可以修改,但是指针指向的值可以修改。

不要返回局部变量的引用

函数的返回值是一个引用,那么函数的调用可以作为一个左值。

2.3.4常量引用

用来修饰形参防止误操作

引用必须指向一个内存空间,栈区或者堆区,不能是常量区中的。

加一个const常量就可以解决问题,相当于先创建一个temp=10,然后将引用指向temp

int a = 10;
const int & ref = 10;  //int temp=10; const int & ref = temp;

추천

출처blog.csdn.net/m0_56366502/article/details/129717924