标准C学习day13 指针高级

一级指针只能指向普通类型的变量
二级指针可以指向一级指针

声明二级指针时需要在指针变量名称
前加两个*

二级指针前加可以表示它指向的那个一级
指针
二级指针前加两个
可以表示一个普通类型
的存储区

假设有如下指针数组
0 |—>
1 |—>
2 |—>
可以把其中第一个指针的地址记录到二级指针

这个时候可以通过二级指针找到数组里的
每个指针
可以认为二级指针代表了整个指针数组
二级指针不可以代表二维数组
主函数的第二个参数就是一个二级指针

无类型指针有可能事实上承担了二级指针
的作用,这个时候就必须首先强制
类型转换成二级指针然后再使用

二级指针通常作为形式参数使用,这个时候
可以通过它从调用函数向被调用函数
传递一个一级指针的存储区

C语言里函数也有地址
函数名称可以用来表示函数的地址

函数指针可以记录函数的地址(指向一个
函数)
函数指针也需要声明
函数指针的声明需要根据函数声明变化
得到

可以使用typedef关键字给函数指针创建
一个类型
以后就可以用这个类型来声明函数指针了

通过使用函数指针形参可以把一个函数
注射到另外一个函数里
这种被注射的函数叫做回调函数

可以在程序运行的时候临时决定需要分配
多少个存储区
这种分配存储区的方法叫动态内存分配
为了管理动态分配内存需要使用一组标准
函数
为了使用这些标准函数需要包含stdlib.h
头文件

malloc函数可以动态分配一组连续的字节
这个函数需要一个整数类型参数表示希望
分配的字节个数
这个函数的返回值表示分配好的第一个字节
的地址
如果分配失败则返回值是NULL
函数把返回值记录在无类型指针里,使用
前需要先进行强制类型转换

计算机不会主动回收动态分配内存
当程序不再使用动态分配内存后必须使用
专门的语句把它们还给计算机
free函数可以用来把动态分配内存还给
计算机(这叫做释放内存)
一起分配的存储区必须一起释放
free函数需要第一个字节的地址作为参数
如果使用指针作为参数调用free函数则
函数结束后必须把指针恢复成空指针

可以把动态分配内存当做数组使用

动态分配内存只要还没有释放就可以自由
的在不同函数之间传递

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值