初始c语言(指针定义及用法)

1.指针的定义

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

int *p = NULL;可以类比int a = 0;NULL就像当于0,指针初始化。

总结:指针就是地址,口语中说的指针通常指的是指针变量。也就是内存

2.指针的类型

我们给指针变量相应的类型。     

char  *pc = NULL;     char*就是存放char类型的地址
int   *pi = NULL;        int*就是存放int类型的地址
short *ps = NULL;     short *就是存放short 类型的地址
long  *pl = NULL;      long*就是存放long类型的地址
float *pf = NULL;       float*就是存放float类型的地址
doutle *pd=NULL;   doutle*就是存放doutle类型的地址 4

 

 int* 访问4个字节,将4个字节的内容都变为0.

 char*访问1个字节,就将1个字节的内容变为0.

 

2.1指针+ - 整数

就如上图,指针的类型决定了指针向前或者向后走一步有多大(距离)

2.2指针的解引用

如上述所说:指针的类型决定了,对指针解引用的时候有多大的权限(能操作几个字节)。

3.野指针

野指针的成因

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

1.未初始化

 2.指针越界访问,数组本有10个元素,可是访问了11个元素。越界访问了。

 3.2 如何规避野指针

  1.  指针初始化

  2.  小心指针越界

  3.  指针指向空间释放,及时置NULL

  4.  避免返回局部变量的地址

  5.  指针使用之前检查有效性

对于指针初始化用NULL。

4.指针的运算

(1)指针+-整数

指针的类型决定了指针向前或者向后走一步有多大

 (2)指针-指针

可以这样理解   日期+日期? 啥都不是,   日期-日期=天数

所以指针-指针= 元素个数     

           

 5. 指针和数组

数组和指针不是一个东西
数组能够存放一组数,连续的空间,数组的大小取决于元素个数指针是一个变量,是存放地址的,4/8个字节
联系就是:
数组名是地址(指针)
数组把首元素的地址,交给一个指针变量后可以通过指针来访问数组

6.二级指针

 对于二级指针的运算有: 
*ppa通过对ppa中的地址进行解引用,这样找到的是 pa, *ppa其实访问的就是 pa.

**ppa先通过 *ppa找到 pa,然后对 pa进行解引用操作: *pa,那找到的是 a.

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

桐桐超努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值