IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言——指针 -> 正文阅读

[C++知识库]C语言——指针

一、定义:

存储类型? 数据类型 *指针变量名

存储类型:auto(默认),register,static,extern

数据类型:由基本数据类型(int,char,short,long,float,double)+ *构成,代表指针所指向 的数据的数据类型?? eg:int *p表示p指针指向的是一个int型的数据。

指针变量名:标识符(由字母,数字,下划线组成,不能以数字开头,不能与关键字重名)

指针变量:是一个变量,存放的是一个地址常量。

二、初始化:

1)指向整型:int a=0;int *p=&a(&表示取地址),把a的地址赋值给p

(2)指向字符型:char a='s'; int *p=&a

(3)指向数组:int a[3]={1,2,3}; int *p=a;a是数组名,本身就是地址常量,其值为数组首地址的值,代表的是整片数组空间,不需要用&对其取地址。int *p=&a[0],a[0]代表数组的第一个元素,所以需要用&对其进行取地址。

三、赋值:

(1)int a=0;? int *p=NULL; p=&a;

(2)char a='s';? int *p=NULL;p=&a;

(3)int a[3]={1,2,3};? int *p=NULL;? p=a; p=&a[0]

注意:在定义指针变量时,如果不知道其接下来需要指向哪儿,不想对其进行初始化时,请初始化为NULL,NULL地址空间不允许被用户访问,可以避免后续指针变量指向不明所带来的段错误。

?四:指针的运算:(通过间接访问的方式操作变量的值)

?int a=0;

int *p=&a;

*p=2; (*表示取值,p此时指向a的地址,*p就代表a的值,将2赋值给*p等于将2赋值给a)

?五:指针变量的运算:(对地址进行偏移,改变指针的指向)

p++;?? //指针向高地址偏移一个数据类型单位???? p = p +1*(数据类型单位)
p--;???? //指针向低地址偏移一个数据类型单位?
p+N;?? //指针向高地址偏移N个数据类型单位????? p + N * (数据类型单位)
p-N;??? //指针向低地址偏移N个数据类型单位
p + q ? //指针没有加法运算,两个地址相加没有实际意义
p - q??? //两个地址之间相差多少个字节,可通过(p-q)/(数据类型单位)计算两个地址之间存储了多少个元素,计算长度。

六:const修饰指针:

(1)int const *p;? //不能通过p修改p所指向的变量的值
??? ? ? ? = const int *p;????

(2)int * const p;?? //不能改变p的指向。
(3)const int *const p;? //既不能改变p的指向,也不能通过p修改p所指向的变量的值
??? ? ? ? = int const * const p;

总结:当const在*前面时,不能通过指针修改值(即不能对*p进行赋值)

?????????? 当const在*后面时,不能修改指针的指向(即不能对p进行赋值)

?????????? 当*前后都有const时,既不能修改指针的指向,也不能通过指针修改值(即不能对*p和p进行赋值)

七:二级指针(指向指针地址的指针)

<存储类型> <数据类型> **变量名;
? int a = 10
? int *p = &a;
? int **q;?? //
? q = &p;???? //q指向p指针的地址
? **q 为10;???? //**q表示对*p指针指向的地址取值,即取a的值,所以为10

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 10:54:41  更:2022-09-13 10:57:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 13:17:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码