导图社区 c语言:指针
c语言最难的部分之指针,用最精炼、最易懂的方式呈现,知识点足够全面,足够细致,足够清晰,高效备考期末和计算机二级这一核心重点非常有用!
哈佛的著名课程导师的力作,原著英文版,笔者读完后受益匪浅,完全颠覆了我对于幸福的认知,能够学习到真正让自己幸福的方法与秘密。通过若干个小集锦进行分享,这真是我这辈子读过的最好最受益的书了。每期分为3~6个锦囊,这样的读书冲击一生一定要获得!如果对原著感兴趣,可以联系我获取原著及译本,这本书能够完美让你幸福起来!分享是快乐的,所以我分享给你们!创作不易,望多加支持!共同幸福生活!
非常棒的一首诗,用思维导图的形式将诗歌、诗词的理解、情感、重难点一网打尽!喜欢的话支持一下哦。
社区模板帮助中心,点此进入>>
互联网9大思维
安全教育的重要性
组织架构-单商户商城webAPP 思维导图。
个人日常活动安排思维导图
域控上线
西游记主要人物性格分析
17种头脑风暴法
python思维导图
css
CSS
指针
内存的两个属性
地址【指针】
定义
内存区的每一个字节都有一个编号,这就是“地址”
规定
每个程序中定义一个变量,对系统进行编译时,系统就会给这个变量分配内存单元
存放的数据【内容、值】
对于指针变量来说,它存放的内容就是地址(指针),也就是说,指针变量的值就是指针
对变量访问的两种方式
比喻: 为了打开一个A抽屉,有两种方法: 将A钥匙带在身上,需要时就找出钥匙打开A抽屉,取出所需要的东西 为了安全起见,将A钥匙放在另一个抽屉B中锁起来。如果需要打开A抽屉,就需要先找到B钥匙,打开B抽屉,取出A钥匙,再打开A抽屉,取出所需要的东西 【这里抽屉B就相当于指针变量,该变量不存放其它具体内容,只存放其它抽屉的钥匙】 对变量的访问都是通过地址(指针)进行的
直接访问
直接按变量名进行的访问
a=5;
printf("%d\n",i);
编译时系统已经为变量i分配了按整型存储方式的4个字节(假如是地址为2000-2003的4个字节),并建立了变量名和地址的对应表,因此在执行时,先通过变量名找到相应的地址,从该4个字节中按照整型数据的存储方式读出整型变量i的值,然后按十进制整数格式输出。
scanf("%d",&a);
如果a是指针变量这里就是间接访问, 如果a是一般变量,这里就是直接访问
在执行时,把键盘输入的值送到地址从2000开始的整型存储单元中
间接访问
将变量i的地址存放在另一个指针变量中,然后通过该指针变量找到变量i的地址,从而访问i变量
指向就是通过地址来体现的
区分
说白了指针就是地址。 地址为什么叫指针呢? 由于通过地址能够找到所需的变量单元,因此说,地址指向该变量单元(如同说,一个房间号指向某一房间一样)。所以,将地址形象化地称为指针。意思就是说通过它能够找到以它为地址的内存单元。 而指针变量就是一类专门用来存放另一变量的地址(即指针)的变量。 指针变量就是用来放指针的!
把变量的地址称为该变量的指针。【知道了一个变量的地址,就可以通过这个地址来访问这个变量】
指针变量
C语言中可以定义一类特殊的变量,这些变量专门用来存放变量的地址,称为指针变量。
指针变量的值(即指针变量中存放的值)是指针(即地址)
两个操作符
*:取值操作符
即:间接访问运算符(又叫指针运算符) 对于*p表示变量p所指的对象
&:取地址操作符
指针的运算
在指针指向数组元素时,允许对指针进行加和减的运算
当p已经指向数组中的一个元素时
p+1/++p:指向同一数组中的下一个元素
p-1:指向同一数组中的上一个元素
当p的初值是&a[0]时,p+i和a+i就是数组元素a[i]的地址 三个等价表达:*(p+5) *(a+5) a[5]
如果p1和p2指向统一数组中的元素
p2-p1:是两个地址之差除以数组元素的长度 可以知道两个指针所指向的元素之间差几个元素
注意p1+p2没有意义
典例
使用指针变量
通过指针变量访问整型变量
通过指针引用数组元素
引用数组元素有两种方法 (1)下标法(2)指针法 指针法的优势: 能使目标程序质量高(占内存小,运行速度快) 注意:规定在c语言中数组名代表数组中首元素(即序号为0的元素)的地址
定义指针变量
一般形式
类型名 *指针变量名;
读法
e.g.int * 指向int的指针 (int指针)
注意
指针变量不能离开基本类型而单独存在
指针变量定义时必须指定基类型,而且只能指向同一个类型的变量
可以在定义指针变量时,同时对它初始化
注意: 初始化的数值只能是变量的地址,不要忘记了&符号 【指针变量中只能存放指针】
加定义时上*表示该变量是指针变量,但是该变量名不包括*
指针变量的两个属性
存储单元编号表示的纯地址
所指向的存储单元的数据类型
引用指针变量
给指针变量赋初值
p=&a;
引用指针变量指向的变量
printf("%d",*p); 作用是以整数形式输出指针变量p所指向的变量的值
*p=1; 表示将整数1赋给p当前所指的变量 相当于给a目前所指的变量赋值
引用指针变量的值
printf("%o",p); 作用是以八进制形式输出指针变量p的值, 即输出所值变量的地址
指针变量作为函数参数