1.指针数组
指针数组,本质是数组,在数组中保存了若干个指针
语法 int*a【5】
int*: 数组中保存的数据类型,该数组中保存的是int*指针
【5】 该数组中可以放五个指针,整体占用40个字节
1)指针数组的定义
int * a【5】
char* a【5】
2)指针初始化
char*p=NULL;4
char*p【5】={NULL}//部分初始化,全部初始化为空null
2))定义为已有字符串地址
char*p=“hello”;把h的首地址保存在p中
char*a【5】={"hello","string",“word”,”are”,“you”};定义了一个数组指针每个指针的都代表对应字符串的首地址
3))已有的指针进行初始化
char*p【3】={p1,p2,p2};
4))指针数组和二维字符型数组区别
二维int str[3][100];
int *str【3】
指针数组
区别 1.二维字符型数组中保存的是多个字符串本身,滋镇数组中保存的是多个字符串的首地址;
2.要保存多个字符串用二维字符型数组,要保存多个字符串用指针数组;
2.二级指针
二级指针;本事还是指针,是一个指针变量的地址
int**指针名称–》保存整形指针的指针
char** 保存字符型指针的指针
C语言中主要有两个二级指针的使用场景
1.想要在背调函数中修改主调函数中的指针变量,实参需要传递该指针的地址,形参用二级指针接受
2.指针数组的数组名,是一个二级指针,实参传递指针数组的数组名黑丝,形参用二级指针
char *str[3] = {"hello", "world", "how"};
str[0] —> char * —>保存了字符串常量"hello"的首地址
str ===> &str[0] ===> char ** 二级指针
3.指针函数
指针幻术,本质是函数
指针函数能返回什么值
1.局部变量地址不能被返回
2.具有静太的储存空间的函数才能被返回
1.static 修饰静态地址的变量
2.全局变量的地址
3.可以返回字符串常量的地址
4.可以通过参数传递给该函数的地址
5.可以返回堆取申请且没有被释放的地址
4.函数指针
函数指针;本质是指针,指向函数的指针
函数:函数的函数名,为函数的入口地址
函数指针语法:
1.定义函数指针
1)函数值声明:
int fun (int ,int);
char *(pfun)(char*);
函数指针:
int (*pfun)(int , int );
定义了一个函数指针变量,该指针变量在内存占8字节,该函数指针可以指向一个具有int返回值,两个int类
型的参数的函数。
char *(*pfun)(char *);
总结:
返回值类型 (*指针名称)(形参表);
2)函数指针初始化
int (*pfun)(int ,int)=null;
3)函数指针赋值
int add(int num1,int num2);
int (*pfun)(int int)=null
pfun=add;
4)函数指针调用函数
函数名(实参表);
函数指针名称;
5)函数指针的运用
回调函数
将函数作为某个函数的采数传递,传递的函数成为回调函数
主要为了降低代码耦合度
网硕互联帮助中心![推荐题目:洛谷 P12792 [NERC 2022] Cactus Meets Torus-网硕互联帮助中心](https://www.wsisp.com/helps/wp-content/uploads/2026/08/20260805114901-6a73232d88bf9-220x150.png)


![打卡信奥刷题(3491)用C++实现信奥题 P10734 [NOISG 2019 Prelim] Experimental Charges-网硕互联帮助中心](https://www.wsisp.com/helps/wp-content/uploads/2026/08/20260805014046-6a72949eaf30f-220x150.png)

评论前必须登录!
注册