C++中的指针怎么定义和使用
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"C++中的指针怎么定义和使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++中的指针怎么定义和使用"吧!1 指针的基本概念作用:可以
千家信息网最后更新 2026年11月01日C++中的指针怎么定义和使用
本篇内容主要讲解"C++中的指针怎么定义和使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"C++中的指针怎么定义和使用"吧!
1 指针的基本概念
作用:可以通过指针间接访问内存。
内存编号是从0开始记录的,一般用十六进制数字表示。可以利用指针变量保存地址。
2 指针变量的定义和使用
指针变量定义语法:
数据类型* 变量名;&可以取地址;*可以取地址存放的值
示例:
#includeusing namespace std;int main(){ int a = 10; //1.指针定义的语法:数据类型 * 指针变量名; int* p; //int* 定义一个指向整数型的指针变量 p = &a; cout << "a的地址是:" << &a << endl; cout << "指针p是:" << p << endl; //2.使用指针,可以通过解引用的方式来找到指针指向的内存 //指针变量前加* 代表解引用,就是找到一个地址内存中存放的数据 *p = 100; cout << "a = " << a << endl; cout << "*p = " << *p << endl; system("pause"); return 0;}
3 指针所占内存空间
指针也是种数据类型,所以指针也是占内存的
32位操作空间下,占用4个字节。
64位操作空间下,占用8个字节。
#includeusing namespace std;int main(){ int a = 10; int* p = &a; cout << "sizeof(int*)=" << sizeof(int*) << endl; cout << "sizeof(float*)=" << sizeof(float*) << endl; cout << "sizeof(double*)=" << sizeof(double*) << endl; cout << "sizeof(char*)=" << sizeof(char*) << endl; cout << "sizeof(string*)=" << sizeof(string*) << endl; system("pause"); return 0;}
可以改变上面的x86(32位)和x64(64位),查看输出结果。
4 空指针和野指针
空指针:指针变量指向内存中编号为0的空间
用途:初始化指针变量
注意:指针变量指向的内存是不可以访问的
示例:
#includeusing namespace std;int main(){ //1空指针用于给指针变量初始化. int* p = NULL; //就是0 //空指针是不可以进行访问的 //0-255之间的内存编号是系统占用的,因此不可以访问 *p = 100; //因为这里不可以访问,所以程序直接退出了,后面的代码不再执行。 cout << p << *p << endl; system("pause"); return 0;}
野指针:指针变量指向非法的内存空间
示例:
#includeusing namespace std;int main(){ //野指针 int* p = (int*)0x1100; //这里定义的这个地址就是不属于我们当前地址空间的地址,就是越界了,也无法访问,所以程序会自动退出。 cout << *p << endl; system("pause"); return 0;}
5 const修饰指针
const修饰指针有三种情况:
1.常量指针:指向常量的指针
2.指针常量:指针类型的常量
3.指向常量的指针常量:一个是本身就是常量的指针指向了一个常量。
const int* p = &a; ---常量指针特点:指针的指向可以修改,但是指针指向的值不可以修改。(帮助理解:从右向左看,const在最后起固定作用,固定了*p的值,但是没有固定p的指向,即使改变了p的指向,*p也是不可更改的。)int* const p = &a; ---常量指针特点:指针的指向不可以修改,但是指针指向的值可以修改。(帮助理解:从右向左看,const在p获得地址后起固定作用,固定了p的指向,但是没有固定*p的值)const int* const p = &a;特点:指针的指向和指针指向的值都不可以修改。
示例:
#includeusing namespace std;int main(){ int a = 10, b = 20; //常量指针 const int* p = &a; //*p = 10;错误,指向的值不可修改 p = &b; //指向可以修改 //*p = 30;即使指向改变,指向的值也是不可修改的。 cout << *p << endl; //指针常量 int* const p2 = &a; //p2 = &b;错误,指向不可修改 *p2 = 100;//指向的值可以修改 cout << *p2 << endl; //指向常量的指针常量 const int* const p3 = &a; //p3 = &b;错误,指向不可修改 //*p3 = 100;错误,指向的值不可修改 system("pause"); return 0;}
6 指针和数组
作用:利用指针访问数组中元素
示例:
#includeusing namespace std;int main(){ int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; cout << "第一个元素为:" << arr[0] << endl; int* p = arr;//首地址赋予了指针变量p cout << p << endl; cout << "利用指针访问第一个元素:" << *p << endl; p++;//指针+1是加一存储单位,int型变量占4字节,所以+4 cout << p << endl; cout << "利用指针访问第二个元素:" << *p << endl; char brr[2] = { 'a','b' }; char* q = brr; cout << (int)q << endl; q++; //字符型变量占1个字节,所以+1 cout << (int)q << endl; //利用指针遍历数组 p = arr; for (int i = 0; i < 10; i++) { cout << *p << endl; p++; } system("pause"); return 0;}
7 指针和函数
作用:利用指针作函数参数,可以修改实参的值。
对比值传递,值传递是为形参另开辟一段内存进行运算;
而指针传递则是传递地址,通过对地址访问,就可以直接对实参做出改变。
#includeusing namespace std;void swap01(int a, int b) //值传递{ int temp = a; a = b; b = temp; cout << "a = " << a << endl; cout << "b = " << b << endl;}void swap02(int* p1, int* p2) { int temp = *p1; *p1 = *p2; *p2 = temp;}int main(){ int a = 10, b = 20; swap01(a, b); cout << "a = " << a << endl; cout << "b = " << b << endl; swap02(&a, &b); cout << "a = " << a << endl; cout << "b = " << b << endl; system("pause"); return 0;}
8 指针、数组、函数
案例:封装一个函数,利用冒泡排序,实现对整型数组的升序排序
例如数组,int arr[10]={4,3,6,9,1,2,10,8,7,5} ;
#includeusing namespace std;void coutarr(int* arr,int len) { for (int i = 0; i < len; i++) { cout << arr[i] << " "; } cout << endl;}void bubbleSort(int* arr, int len) //值传递{ for (int i = 0; i < len; i++) { for (int j = 0; j + i < len - 1; j++) { if (arr[j] > arr[j+1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } }}int main(){ int arr[10] = { 4,3,6,9,1,2,10,8,7,5 }; int len = sizeof(arr) / sizeof(arr[0]); cout << "排序前的数组为:" << endl; coutarr(arr, len); bubbleSort(arr, len); cout << "排序后的数组为:" << endl; coutarr(arr, len); system("pause"); return 0;}
到此,相信大家对"C++中的指针怎么定义和使用"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
指针
指向
变量
常量
地址
内存
数组
空间
作用
就是
示例
元素
函数
字节
数据
类型
错误
排序
C++
特点
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海睿民互联网科技有限公司
广东猪兼强互联网科技有限公司
广州百单互联网科技有限公司
科技互联网项目
今日互联网科技
互联网电商科技
互联网金融 金融科技
互联网与未来科技
北京禾田雨橡互联网科技
米客互联网科技
山东吉时兔互联网科技有限公司
老年人脱离互联网科技的作文
深圳市运趣互联网科技有限公司
深圳前海聚择互联网科技有限公司
深圳国际航运科技和互联网
互联网科技博主是什么意思
电子科技大学互联网创业大赛
华夏恒生科技与互联网科技
互联网金融科技公司的优势
玉溪新华互联网科技怎么选
互联网科技视频素材
互联网之后的科技是什么
湖南一路畅行互联网科技
互联网科技与大数据专业
互联网科技如何创业
山东星卡互联网科技有限公司官网
互联网科技数字货币
图游互联网科技
易企秀互联网科技是做什么的
北京互联网科技类企业分布