1.1 定义
// 定义指针
int a = 10;
// 指针定义的语法->数据类型 *指针变量名
int *p;
//让指针记录变量a的地址
p = &a;
或者直接 int *p = &a;
1.2 使用
// 指针前加 * 代表解引用,找到指针指向的内存中的数据,进行读取,修改数据
*p = 1000;
1.3 指针所占内存空间
不管是什么数据类型,在 32 位操作系统下占用4个字节空间;64位占8个字节。
查看指针所占内存空间:
sizeof(p); // 或者 sizeof(int *);
1.4 空指针和野指针
空指针:指针变量指向内存中编号为0的空间。用途是初始化指针变量。注意:空指针指向的内存是不可以访问的
int *p = NULL;
友情提示:0~255之间的内存编号是系统占用的,因此不可以访问
野指针
// 指针变量指向内存地址编号为 0x1100的空间
int *p = (int *)0x1100;
// 访问野指针报错
cout << *p << endl;
2.1 ★const修饰指针
const修饰指针有三种情况:
int a = 10;
const int *p = &a;
int * const p = &a;
const int * const p = &a;
2.2 指针和数组
利用指针访问数组中元素。
int arr[10] = {1,2,3};
int *p = arr;
for(int i = 0; i < 10; i++){
// 以下两行代码或者简写为 *p++
cout << *p << endl;
p++;
}
2.3 指针和函数
举个栗子:swap函数:交换两个数
int a = 10;
int b = 20;
swap(&a, &b);
void swap(int *p1, int *p2){
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
2.4 结构体指针
struct student{
string name;
int age;
int score;
};
// 1.创建学生结构体变量
struct student s = {"张三", 18, 100};
// 2.通过指针指向结构体变量
struct student *p = &s;
// 3.通过指针访问结构体变量中的数据
cout << p -> name << p -> age << p -> score << endl;
Original: https://www.cnblogs.com/skipspur163/p/15861360.html
Author: SKIPSPUR_SUPER
Title: 指针
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/583792/
转载文章受原作者版权保护。转载请注明原作者出处!