C语言指针

计算机的存储机制

image.png

指针

指针就是指针变量,用来存储其它数据单元(变量,数组,结构体,函数等)的首地址。是对数据单元的间接访问。若指针存放了某个数据数据单元的首地址,则这个指针指向这个数据单元,如果存放的值为0,则这个指针为空指针
何种类型的指针在固定的系统下所占的字节是固定的

image.png

运行代码及结果
由上述结果可以看出,int型指针和char型指针所占的大小是相同的,即在固定的系统下指针所占的字节是相同的。

注意:在定义指针的时候使用的是
int *p;
但也有 int* p 这种形式,但是这种形式会产生歧义
int* p,p1;会被误以为 p和p1都是int* 形式的,但其实p是int* ,而p1是int型的

指针的操作

image.png

int *p; p++; //p是int型的指针,加的是一个int型的大小,并不一定是1

对于单独的变量而言,一般不执行p++;p++之后会变成野指针,一般指针++在数组中

数组与指针

数组名几位指向该数据类型的指针,数组的定义等效于申请内存,定义指针和初始化

c[0] ====== *c
c[1] ====== *(c+1)
c[2] ====== *(c+2)

image.png

不可以只定义指针,不给指针赋初值(野指针 如下代码)

int *p; *p;

指针的应用

参数传递

值传递具有安全性(子函数中值的改变不会影响主函数中值的改变)

image.png

指针传递
1、在子函数中操作的是原先的数据,而值传递子函数中修改的是副本
2、使用指针传递输出参数,利用主函数和子函数使用同一套数据的特性,实现数据的返回,实现多返回值函数的设计

image.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值