Skip to content

C++ 记录

指针和数组

指针

指针就是指向赋值变量的内存地址。

c++
#include <iostream>
using namespace std;

int main() {
  int val = 1;
  int * pt = &val;
  
  cout << val << endl;
  cout << pt << endl;
  cout << *pt << endl;
  return 0;
}

// 打印:
1
0x.....
1

int * pt = &val;

上面这行代码的意思,就是声明一个 INT 类型的指针,并指向 val 变量的内存地址。什么类型的指针,只能指向同样类型的值的内存地址。

  1. 获取内存地址:pt | &pt | &val
  2. 获取值:*pt | val

数组

c++
int main() {
  int arr[3] = {1,2,3};
  
  cout << (arr == &arr[0]) << endl;
  cout << arr[0] << endl;
  cout << arr[1] << endl;
  cout << arr[2] << endl;
  cout << &arr[0] << endl;
  cout << &arr[1] << endl;
  cout << &arr[2] << endl;
  
  int * pt = arr;
  cout << pt << endl;
  pt += 1;
  cout << pt << endl;
  pt += 1;
  cout << pt << endl;
  pt += 1;
  
  return 0;
}

// 打印
1
1
2
3
0x16fdff1e8
0x16fdff1ec
0x16fdff1f0
0x16fdff1e8
0x16fdff1ec
0x16fdff1f0

声明了数组:arr,其实就是一个指针,该变量默认指向数组的第一个值的内存地址:

c++
cout << (arr == &arr[0]) << endl;
// 1

我们可以通过指针,逐一访问数组:

c++
int * pt = arr;
cout << pt << endl;
pt += 1;
cout << pt << endl;
pt += 1;
cout << pt << endl;
pt += 1;

数组 + 结构

生成

修改

删除

查询