[C语言]指针

 

目录

 指针介绍

指针和指针类型

野指针

指针运算

指针和数组

二级指针

指针数组--数组


指针介绍

指针:在存储过程中,内存被分成一块一块的,每一个都有一个编号,这个编号就叫地址,通过地址可以找到(指向)这个内存单元,所以地址也叫指针。

指针变量:用来存放指针(地址)的。

指针大小:32位机器中是(32个比特位)4个字节,64位机器中是8个字节

eg:

int a=10;//a占4个字节

int *pa=&a;//拿到的是a的4个字节中的第一个字节

指针和指针类型

指针类型决定了指针解引用的权限有多大(能操作几个字节)。

指针类型决定了指针走一步能有多远(步长),

野指针

概念:指针指向的位置是不可知的。

原因:

  1. 指针未初始化
  2. 指针越界访问
  3. 指针指向的空间释放

解决:1.初始化,指针初始化则置空。

           2.避免越界

           3.指针使用前检查有效性     

           4.指针释放要置空

指针运算

1.指针关系运算(地址比较)

2.指针+-整数

例题如下:

 3.(指针相减的前提是两个指针指的相同)指针-指针=两个指针的元素个数如下:

 指针和数组

数组名是首元素的(首)地址

 由图上可知p+i就是下标为i的元素地址

所以*(p+i)=i;

arr[2]<==>*(arr+2)<==>*(p+2)<==>*(2+p)<==>*(2+arr)<==>2[arr](访问数组时[]是一个操作符,arr与2是俩个操作数)

p[2]<==>*(p+2)<==>arr[2]

二级指针

如下pa为一级指针,把pa的地址存放在ppa中,ppa为二级指针:

int a = 10;
int *pa = &a;//*说明了pa是指针变量,pa指向的a为int型,所以类型为int
int* *ppa= &pa;//ppa指向的pa为int*型,所以类型为int*

*ppa==pa

*pa==a

所以:**ppa==a

指针数组--数组

如同好孩子,重点是孩子

概念:存放指针的数组eg:int *pa[5];-->存放的是整型指针

这个先认识下就好了

好啦今天课程就到这里了,拜拜┗|`O′|┛ 嗷~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值