C语言_指针初级(1)

一、指针是什么:

指针理解的两个要点:

1.指针是内存中一个最小单元的编号,也就是地址。
2.平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量。

总结:

- 指针就是地址,口语中说的指针通常指的是指针变量 - 指针变量用来存放地址的变量。(存放在指针中的值都被当成地址处理) - 指针变量用来存放地址的变量,地址是唯一标示一个内存单元的 - 一个小的单元多大?如何编址? 对于32位的机器,假设有32根地址线那么假设没根地址线在寻址的时候产生高电平(高电压)和低电平(低电压)就是(1或者0)就会有 2的32次方个地址;每个地址标识一个字节 ....... 4G的空间进行编址。

二、指针和指针类型

- 不同类型的指针变量在32位平台下是4个字节 - 不同类型的指针变量在64位平台下是8个字节

三.指针类型的意义

  • 1.指针类型可以决定指针解引用的时候访问多少个字节(指针的权限)

int * 的指针解引用 与 char * 的指针解引用

指针类型决定指针 +/-1 操作时的步长;

整形指针 +1 跳过4个字节,
字符指针 +1 跳过1个字节。

+/-n 时 跳过的步长;

type * p 的指针

跳过的是 n * sizeof(type)这么多个字节

四.野指针

  • 概念:野指针就是指针指向的位置是不可知的(随机的,不正确的,没有明确限制的)
  • 4.1 野指针的成因
  • 1.指针未初始化
  • 2.指针越界访问
  • 3.指针指向的空间释放

  • 4.2 如何规避野指针

  • 1.指针初始化

(1).明确知道指针应该初始化为谁的地址,就直接初始化。
(2).不知道指针初始化为什么值,暂时初始化为NULL

ptr 是一个空指针,没有指向任何有效空间,这个指针不能直接使用

    1. 小心指针越界
    1. 指针指向的空间释放,及时置为空 NULL
    1. 避免返回局部变量的地址
    1. 指针使用之前检查有效性

五.指针运算

  • 5.1 指针 ± 整数
    例子:
  • 5.2 指针 - 指针

    指针 - 指针运算的前提条件是:指针和指针指向了同一块空间。
  • 5.3 指针的关系运算(比大小)

    地址是有大小的
    指针的关系运算就是比较指针的大

猜你喜欢

转载自blog.csdn.net/Ghr_C99/article/details/130797741