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 变量的内存地址。什么类型的指针,只能指向同样类型的值的内存地址。
- 获取内存地址:pt | &pt | &val
- 获取值:*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;