C语言指针

1.指针(pointer)是编程语言中的一个对象,简单来说就是将地址称作指针,就是说通过指针能找到以他为地址的内存单元;

指针其实就是一个变量,变量里面存的是地址;存放在指针变量中的值当成地址处理;

2.

 32位默认指针的字节长度是4

3.不管指针是pa也好,或者是pc,在int 和char定义下的地址是一样的;

 4.指针类型决定了指针进行解引用操作时,能够访问的空间大小;

 int*p  *p能够访问4个字节;

char*p   *p能够访问1个字节;

double*p  *p能够访问8个字节;

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

5.

 注意:不管是pa还是pc指针,在int和char下的地址是一样的;所以第一项和第三项是一样的,但是第二项定义的是整型,第四项定义的是char;所以第二项+1,地址增加4个比特位。第四项+1,地址增加1个比特位;        

6.指针类型决定了:指针走一步走多远(指针的步长)指针的类型简单来说就是:整型、字符型、双字符型等等。

 7.野指针:

(指针指向的位置是不可知的=随机的、不正确的、没有明确限制的)

定义: 1.int a;  类似于这种,局部变量不初始化,默认是随机值;        局部的指针变量没有初始化;就会被定义作野指针;

2.当指针指向的范围超出数组arr的范围时,p就是野指针;

 3.避免野指针:

1.指针初始化  2.小心指针越界   3.指针指向空间释放即使置NULL   4.指针使用之前检查有效性

8.为了避免野指针,给指针初始化时,实在不清楚初始化什么值;可以给指针定义空指针NULL;

int*p=NULL;NULL给指针赋值,用来初始化的;

9.注意:当对pa置于NULL空时,此时指针pa不再代表a的地址;

 当指针有用时,我们对其进行初始化,让其代表地址;当不需要指针时,我们将其置空NULL;

10.用指针函数打印数组:(数组传过去的是首元素,打印数组中的参数时,可加可减)

 

 11.指针-指针=指针所对应中间元素的元素个数;打印出来结果为9;

 12.使用指针实现计算数组中字符个数;

13.指针的关系运算: 

14.int arr[10]={0};绝 大 多 数   数组名arr就是首元素的地址;

两个例外:1. &arr--&数组名--数组名不是首元素的地址--数组名表示整个数组--&数组名--取出的是整个数组的地址;  2. sizeof(arr)--sizeof(数组名)--数组名表示整个数组--sizeof(数组名)计算的是整个数组的大小;

 

 

 注意:前两个打印的都是首元素的地址;而&arr打印的是整个数组的地址:当整个数组+1时;转换进制:比特位+40;

15.指针函数中打印数组中的地址:

&arr[i]的功能和p+i所实现的功能是一样的;p为指针函数,代表首元素的地址,每次+i,代表依次打印数组中每个元素的地址;

 16.以指针的形式打印数:

 

 17.二级指针:依次类推,可以定义下述N级指针;

 注意书写规范:

 

 18.指针数组和数组指针:

指针数组--数组--存放指针的数组;数组指针--指针;

整型数组--存放整型;字符数组--存放字符;指针数组--存放指针;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值