C语言基础(五)

指针

指针是一个数据类型,指针是一个保存地址的数据类型

//定义变量
int a;
//定义指针
int* p;//定义了一个名叫p的指针
//int与“指针”分别是修饰a和p的数据类型

地址:内存单元的标号
指针的大小:在32OS,大小为4字节;在64OS,大小为8字节
在这里插入图片描述

<存储类型> 数据类型 指针名;
int * p;
//一个指向int类型变量的指针
//编译器分配4字节空间,起名为p,存放int类型变量的地址

在这里插入图片描述
指针的数据类型:去掉指针名,剩下的就是指针的数据类型

int* p;
//p的数据类型是int*

tip----总结*的用法

  • 双目运算符 ----乘法 a*b
  • 单目运算符 ----取值 *p
  • 定义变量时,表示指针这种数据类型
    在这里插入图片描述
    指针变量中只能保存他指向同种类型的变量的地址

野指针

不知道指向的指针(局部指针,未初始化,随机指向)
在这里插入图片描述
避免野指针----先指向NULL,0号地址

空地址

0号地址:没有指向的指针(NULL)
注意:禁止操作
特点:不读不写(这片空间不能保存别的地址,只能保存NULL,即就是不能指向,但是别的指针可以指向它)
在这里插入图片描述

二级指针

指针的指针(保存指针的地址)
二级指针的内存空间:用来保存一级指针的地址

<存储类型>   数据类型   指针名;
int** pp;

在这里插入图片描述
在这里插入图片描述

子函数实现两数交换

此处为值传递
在这里插入图片描述
在这里插入图片描述
调用函数的时候,需要操作地址里面的值,需要传地址,此时为地址传递
在这里插入图片描述

总结

1、指针指向的数据类型:去掉*和指针名,剩下的就是指向的数据类型

int *p ---- 指针指向int类型
int ** pp ---- 二级指针指向
int *** ppp -----三级指针指向int**类型

2、指针的数据类型:去掉指针名,剩下的就是指针的数据类型

int * p ----- 指针的数据类型int *
int ** pp ---- 二级指针的数据类型int **
int ***ppp ----三级指针的数据类型int ***

3、指针所能访问到的空间的大小,由其指向的数据类型决定

char * p ----访问char 类型,1byte
int * p ---- 访问int类型,4byte
int **pp ----访问int*类型,4byte(32OS)
char ***ppp ---- 访问char **类型 ,4byte(32OS)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值