预习3

1

指针相关概念

 

 

在C语言程序中,任何野指针或越界的数组下标都可能使系统崩溃

                  两次释放内存也可能会导致这种结果

 

指针的算术运算也只能在一个特定的数组中进行。实际上,这并不是一种限制,因为指针的算术运算只有在一个数组中进行才有意义。对指针的算术运算来说,一个数组并不是一个数组变量

 

 

 

 

 

 

2指针变量

     系统为指针分配内存空间

     指针有自己的地址

     指针能够存值,但这个值比较特殊-----地址

 

     学习指针要注意两点

    1:指针的类型

        把指针声明语句里的指针名去掉

    2:指针所指向的类型

       只需把指针声明语句里的指针名和名字左边的指针声明符“*”去掉

 

 

 

 

 

3指针的值

指针的值也叫指针所指向的内存区或地址

指针的值是指针本身存储的值

我们所说一个指针的值是XX,就相当说该指针指向了以XX为首地址的一片内存区域,我们所说的一个指针指向了某块内存区域,就相当于说该指针的值是这块内存区域的首地址

指针的值的位数和32/64位系统有关

 

 

 

 

 

 

 

4指针的运算

 

   1.指针的算术运算

          指针+-整数

   2.只针的关系运算

          <  <=  >   >=

   3.间接引用

对于已经说明的变量来说,变量名就是对变量值的直接引用。

对于指向变量或内存中任何对象的指针来说,指针就是对对象值的直接引用

 

假如P是一个指针,P的值就是其对象的地址:*P表示使间接引用运算符作用于P,*P值就是P所指向的对象的值

4最多使用几层指针

答案是至少可以有12层

 

 

 

5常量指针和指针常量

常量指针指向的内容不可变,但地址可以变,即指针可以指向别的地址。

而指针常量是指指针本身不可变,而内容可以修改

要注意:

      1:如果指针常量指向的是字符指针变量,那么当修改*P时,编译时可以通过,但运行时出错,因为他试图修改常量去的内容

       2:当指针常量指向宁外一个指针时,当这个指针指向别的内容时,那么指针常量还是指向原来的值

 

 

 

6.空指针及其应用

有时候,在程序中需要使用这样一种指针,它并不指向任何对象,这种指针被称为空指针,、

空指针的值是NULL,NULL是在"stdio.h"中定义的一个宏,它的值和任何有效指针的值都不同。

指针的值不能是整形值,但空指针是个例外,即空指针的值可以是一个纯粹的0。

 

 

空指针的用法:

    1用空指针终止对递归数据结构的间接引用,递归是指一个事物由它本身来定义

    2用空指针进行函数调用失败的返回值。

    3用空指针做警戒值。

 

 

 

 

7指针void:万能指针

void指针一般被称为通用指针或泛指针,它是C语言关于“纯粹地址”的一种约定,void指针指向某个对象,但该对象不属于任何类型

例:

     int *p;

           void  *P;

IP指向一个整形值,而P指向的对象不属于任何类型

 

 

 

 

8指针数组与数组指针

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值