指针的作用:可以通过指针间接访问内存
指针变量定义语法: 数据类型 * 变量名
- #include
- using namespace std;
- int main()
- {
- //1.定义一个指针
- int a = 10;
- //指针定义的语法: 数据类型 * 指针变量名 ;
- int* p;
- //让指针记录变量a的地址
- p = &a;
- cout << "a的地址是:" << &a << endl;
- cout << "指针p指向的地址是:" << p << endl;
-
- //2.如何使用指针
-
- //可以通过解引用的方式来找到指针指向的内存
- //指针恰加 * 代表解引用,找到指针指向的内存中的数据
- *p = 1000;//将指针指向的内存中的数据修改为1000
- cout << "a的值是:" << a << endl;
- cout << "指针p指向的地址中的值是:" << *p << endl;
- system("pause");
- return 0;
-
- }

提问:指针也是种数据类型,那么这种数据类型占用多少内存空间?

- #include
- using namespace std;
- int main()
- {
- // 指针所占的内存空间
- int a = 10;
- //int* p;
- //p = &a;
- int* p = &a;
- //在32位操作系统下,指针是占用4个字节空间大小,不管是什么数据类型
- //在64位操作系统下,指针是占用8个字节空间大小,不管是什么数据类型
- cout<<"sizeof(int *)="<<sizeof(p)<
- cout << "sizeof(int *)=" << sizeof(int *) << endl;
- cout << "sizeof(int *)=" << sizeof(float *) << endl;
- cout << "sizeof(int *)=" << sizeof(double *) << endl;
- cout << "sizeof(int *)=" << sizeof(char *) << endl;
- system("pause");
- return 0;
- }

四、空指针和野指针
空指针:指针变量指向内存编号为0的空间
用途:初始化指针变量
注意:空指针指向的内存是不可以访问的
4.1 空指针
- #include
- using namespace std;
- int main()
- {
- //空指针
- //1.空指针用于给指针变量进行初始化
- int* p = NULL;
- //2.空指针是不能进行访问的
- //0~255之间的内存编号是系统占用的,因此不可以访问
- *p=100; //error: dereferencing pointer to incomplete type 'int'
-
-
- system("pause");
- return 0;
-
-
- }

4.2 野指针
野指针:指针变量指向非法的内存空间
注意:空指针野指针都不是我们申请的空间,因此不需要访问。
- #include
- using namespace std;
- int main()
- {
- //野指针
- //在程序中,尽量避免出现野指针
- int *p =(int*)0x1100;
-
- cout<<*p<
//输出地址为0x1100处的值,此处为0,所以会出现野指针错误 - system("pause");
- return 0;
-
- }

五、const修饰指针
const修饰指针有三种情况:
- const修饰指针 ----常量指针
- const修饰常量 ---指针常量
- const即修饰指针,又修饰常量



- #include
- using namespace std;
-
- int main()
- {
- //1.const修饰指针
- int a = 10;
- int b = 10;
- const int* p = &a; //指向常量的指针
- //*p = 20; //错误,不能修改常量指针指向的值
- p = &b; //正确,可以修改指针指向的值
- //2.const修饰常量
- int * const p2 = &a; //指针指向常量,不能修改指针指向的方向,指针指向的值可以改
- *p2 = 20; //正确,可以修改指针指向的值
- //p2 = &b; //错误,不能修改指针指向的方向
-
- //3.const修饰指针和常量
- //指针指向和指针指向的值都不能修改,只能读取
- const int * const p3=&a;
- //*p3 = 20; //错误,不能修改指针指向的值
- //p3 = &b; //错误,不能修改指针指向的方向
- system("pause");
- return 0;
-
-
-
- }
六、指针和数组
作用:利用指针访问数组中元素
- #include
- using namespace std;
-
- int main() {
- //指针和数组
- //利用指针访问数组中的元素
- int arr[10]= {1,2,3,4,5,6,7,8,9,10};
- cout<<"数组中的第一个元素:"<
0]< - int* p = arr;//arr就是数组的首地址
- cout<<"数组中的第一个元素的地址:"<<*p<
- p++;//指向数组的第二个元素
- cout<<"数组中的第二个元素的地址:"<<*p<
- p--;//指向数组的第一个元素
- cout << "利用指针遍历数组" << endl;
- for (int i = 0; i < 10; i++) {
- cout << *(p + i) << " ";
- }
- cout << endl;
-
- system("pause");
- return 0;
- }

七、指针和函数
作用:利用指针做函数参数,可以修改实参的值
- #include
- using namespace std;
- //实现两个数字进行交换
- void swap01(int a, int b) {
- int temp = a;
- a = b;
- b = temp;
- cout << "a=" << a << " b=" << b << endl;
- }
- void swap02(int* a, int* b) {
- int temp = *a;
- *a = *b;
- *b = temp;
- }
-
- int main() {
- //指针和函数
- //1.值传递
- int a = 10;
- int b = 20;
- swap01(a, b);
- cout << "a=" << a << " b=" << b << endl; //输出结果为 a=20 b=10
- //2.地址传递
- //实参的值会发生改变
- swap02(&a, &b);
- cout << "a=" << a << " b=" << b << endl; //输出结果为 a=20 b=10
-
-
- system("pause");
- return 0;
- }

八、指针、数组、函数(案例)

- #include
- using namespace std;
- //冒泡排序函数
- void bubbleSort(int* arr, int len) {
- {
- for (int i = 0; i < len - 1; i++) {
- for (int j = 0; j < len - 1 - i; j++) {
- if (arr[j] > arr[j + 1]) {
- int temp = arr[j];
- arr[j] = arr[j + 1];
- arr[j + 1] = temp;
-
-
- }
- }
- }
- }
- }
- int main()
- {
- //1.先常见一个数组
- int arr[10] = { 4,3,6,9,1,2,10,8,7,5 };
- //2.创建函数,实现冒泡排序
- int len = sizeof(arr) / sizeof(arr[0]);
-
- //3.调用函数,对数组进行排序
- bubbleSort(arr, len);
- cout << "排序后的数组为:";
- for (int i = 0; i < len; i++) {
- cout << arr[i] << " ";
- }
- cout << endl;
-
- system("pause");
- return 0;
-
-
-
- }

-
相关阅读:
第十四章大数据和数据科学4分
用Unity同时开发【微信小游戏】【安卓】【IOS】游戏#5.5.1 窗口管理器
前端综合面试题(持续更新)
基于遗传算法的微电网调度(风、光、蓄电池、微型燃气轮机)(Matlab代码实现)
Flutter教程之为什么 Flutter 是创业的最佳选择?
Matlab导入log(或txt)文件,提取数据或其他信息
专业的人做专业的事 GBASE参编数据库发展研究报告(2022年)、入选全球数据库产业图谱
分布式系统中的领导选举
Adobe Acrobat Pro DC 2023:提升工作效率,激发创意灵感 mac/win版
性能测试性能瓶颈问题分析调优案例
-
原文地址:https://blog.csdn.net/m0_64703222/article/details/138175261