首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【进阶指针二】数组参&指针参&函数指针&函数指针数组&回调函数

【进阶指针一】字符指针&指针数组&数组指针 https://blog.csdn.net/qq_64428099/article/details/125011487 目录  1.数组参 1-2 二维数组参...  2 指针参 2-1 一级指针参 2-2 二级指针参 2-3 关于&arr和arr 3 函数指针 3-1 函数指针引入 3-2 函数指针脱裤子放屁使用【先见一见基本操作】 3-3 试图看懂大佬写代码... 4 函数指针数组 4-1函数指针数组引入和基本使用  4-2 函数指针数组妙用 ----  1.数组参 1-1一维数组参 正向:实参给定,猜猜看形参可以怎么写?...// arr是二维数组数组名,表示是一维数组地址 return 0; } 2-3 关于&arr和arr 2-3-1 这里以二维数组为例,讲一讲实参和形参匹配问题 void test1...(整个一维数组地址 test2(&arr);//整个二维数组地址 return 0; } 这里以一维数组为例,讲一讲函数内要想打印具体实现(&arr鸡肋问题): 如果在主函数调用时候

87440

指针详解(二级指针指针数组数组指针、字符指针二维数组参、函数指针变量)(二)

:当你在写函数时,如果你想让函数操作一个数组,你可以数组指针作为函数参数传递。...四、二维数组参,形参写二维数组 1、为什么一维数组参,形参可以是数组,也可以是指针?...1.写成数组更加直观,为了方便理解 2.写成指针参是因为数组参,传递数组第一个元素地址 二维数组参,形参写成数组也是可以,非常直观,容易理解 2、形参能写成指针吗?...*)[5],那就意味着二维数组参本质上也是传递了地址,传递第一行这个一位数组地址,那么形参可以写成数组指针形式 五、函数指针变量 函数指针变量创建 函数指针用来存放函数地址 1、回调函数...:在很多情况下,我们需要将一个函数作为参数传递给另一个函数

36910
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【C 语言】二级指针作为输入 ( 二维数组 | 抽象业务函数 | 二维数组打印函数 | 二维数组排序函数 )

    文章目录 一、抽象 二维数组 业务函数 1、二维数组 打印函数 2、二维数组 排序函数 二、完整代码示例 一、抽象 二维数组 业务函数 ---- 1、二维数组 打印函数 注意 , 二维数组 作为 函数参数...输入到函数中 , 不能传入 二维指针 ; 此处遍历时 , 注意指针步长 ,传入一个二级指针 char ** , 会出错 , 如果传入 二级指针 , array[i] 等同于 *(array + i)..., array 步长是 10 ; 这里 函数形参 定义为 char array[4][10] ; 代码示例 : /* * 此处遍历时 , 注意指针步长 , * 传入一个二级指针 char *...array + i)); } return 0; } 2、二维数组 排序函数 二维数组排序时 , 也不能传入二维指针作为形参 , 需要传入 char array[4][10] 作为形参...二维数组排序 // 对 指针数组 进行排序 , 排序依据是 指针 指向数据对比 sort_array(array, num); // IV.

    93630

    一维数组二维数组取地址和指针

    arr跳过是 4 字节 而 &arr 跳过是 40 字节 二维数组 二维数组数组二维数组数组名 和 一维数组数组名有点差别,我们经常用一维数组思维,想当然认为二维数组数组名是整个数组第一个元素地址...但是二维数组可以看作是一个一维数组,其数组每一个元素都是一个数组。 所以二维数组数组名就是对应一维数组首元素,即二维数组第一行元素。...二维数组就表示二维数组地址。...该处地址信息由指针变量 ptr1 进行存储;再对ptr1 进行 -1操作,因为ptr 1类型是int 类型指针,所以 -1 操作是跳过了 一个int 类型字节,即为 数组最后一个元素 a[ 9 ]...我们需要用一个指针变量接受 *aa[ 0 ]值, 因为 * aa[ 0 ]虽然表示是第一行元素地址,但是指针变量接收到 还是 * aa[0] 第一个元素地址。

    19210

    函数指针定义方式,和指针函数区别,函数指针数组

    printf("%d+%d", a, b); } void test() { //函数指针定义三种方式 //1.先定义出函数类型,再通过函数类型定义指针变量 typedef void(FUNC_TYPE...//2.先定义出函数指针类型,再通过类型定义函数指针变量 typedef void(*FUNC_TYPE)(int, int); FUNC_TYPE func = fun1; func...以上三种方式:第三种使用率最高 函数指针指针函数区别 函数指针:指向函数指针—void(*p)(int,int)=fun1; 指针函数函数返回值是指针—int * fun1(int *a){return...a;} 函数指针数组-----》指针数组数组里面每个元素类型都是函数指针 #define _CRT_SECURE_NO_WARNINGS #include void fun1()..."fun1\n"); } void fun2() { printf("fun2\n"); } void fun3() { printf("fun3\n"); } void test() { //函数指针数组

    1.3K10

    C 二维数组指针函数指针、typedef等一些笔记

    文章目录 二维函数指针 二维数组 二维数组名不能传递给二级指针 数组含义 指针作为函数入参 一维指针 改变一维指针指向值 改变一维指针指向地址 二维指针 函数指针 函数指针数组 typedef...10个元素数组,也称行指针 int* p[10]:一个数组数组内每个元素都是指针 二维数组名不能传递给二级指针 二维数组跟二级指针,没有直接关系。...指针作为函数入参 当需要在函数内部改变传入变量值,就需要这个变量地址,对指针变量也一样。 一维指针 改变一维指针指向值 当一维指针作为函数入参,且需要改变它值,需要外部定义好、分配好内存。...函数了ptr本身地址0x1进去,在函数内部将它0x1指向旧地址0x2指向了新地址如0x3。跳出函数后,ptr本身地址0x1没变,而它指向地址变成了0x3。...二维指针 函数指针 本质是一个指针变量,该指针指向这个函数。总结来说,函数指针就是指向函数指针函数指针有两个用途:调用函数和做函数参数。

    59710

    指针二维数组结合运用

    我们可以把二维数组一行看成一个一维数组。 我们先声明一个二维数组和一个一维数组: a[3][2] b[2] , 方便下文说明! 有了这些区别,我们把他们和指针放到一起有什么区别那?...那类似的a也是一个指针常量,那么它指向是谁那?事实上,二维数组名和一维数组名一样指向也是他第一个元素,但这里注意,二维数组每个元素都是一个一维数组。...但是二维数组名指向也是首元素,但这个首元素是一维数组这个一大块,一维数组可不是一个单独整数,浮点数或者字符,而是某种这些类型中一种集合,一个指针指向一个一维数组这一大块还是第一次见。...这个别扭int(*p)[2]是什么那?这个就是数组指针。这里就要引出数组指针了,数组指针定义为: 数据类型(*指针名)[该二维数组中一维数组元素个数]。通过这样定义可以让指针指向二维数组。...同样二维数组名也可以看成指针,即int(*p)[2] = a;那么可以把a看做是指针p,只不过a是指针常量,而p是指针变量。

    46640

    函数指针数组概念和应用

    ,因为我们发现Add,Sub,Mul,Div这4个函数参数和返回类型都一样,又因为函数名就表示函数地址,所以我们把这4个函数地址存放在函数指针数组parr里面。...书写小技巧: 我们书写函数指针数组时,先写上函数指针形式,接着在名字后面加上数组 [ ] 方括号,就可以完成对函数指针数组形式书写。 有什么用? 我们来模拟实现一个计算器。...不难看出,用函数指针数组求解不仅仅减少很多代码量,也方便我们日后增加运算法则,直接在数组里面增加函数名即可。...指向函数指针数组指针 相当于我们取了函数指针数组地址进行存放,书写形式就是先写函数指针,接着再写函数指针数组,最后再写指向函数指针数组指针。...; } 小技巧: 指针把*和名字去掉,剩下就是指针指向对象 数组数组名和 [ ] 去掉,剩下就是存放在数组类型。

    7610

    指针详解(const、指针运算、数组理解、址调用和值调用、一维数组本质​)(一)

    这实际上是向数组中输入数据。 printf("%d ", *(p + i));使用printf函数输出指针p加上i所指向整数。这实际上是从数组中读取数据并输出。...3.arr[i]中[]是索引运算符,用于访问数组元素。它表示数组名arr解析为指向数组首元素指针,并使用索引i进行偏移,以访问数组中第i个元素值。...引子:我们之前都是在函数外部计算数组元素个数,把数组传给下一个函数后,函数内部可以求数组元素个数吗?...//test(arr);//这里数组名就是数组首元素地址 Print(arr,sz); return 0; } 六、址调用和值调用 值调用:是变量,值调用 int Add...值调用函数时,函数实参传给形参,形参是实参一份拷贝 形参有自己独立空间,对实参修改不会影响实参!!!

    18510

    指针数组做main函数形参

    指针数组 1.1 基本概念 指针数组是指一个数组,其中每个元素都是指针。 这意味着数组每个元素都存储一个地址,该地址指向内存中某个位置。...*intArray[3]; // 声明一个包含3个整型指针数组 // 指针指向整型变量 intArray[0] = &num1; intArray[1] = &num2;...指针数组做main形参 2.1 int main(int argc, char *argv[]); 指针数组一个重要应用是做main函数形参。...1. main函数原型通常定义为 int main(int argc, char *argv[]); 说明: 其中,argc 表示命令行参数数量,argv 是一个指针数组,每个元素都是一个指向以 null...如果main函数带参数的话,则第一个参数必须是int型,第二个参数必须是字符指针数组 char *xx[],参数只能由操作系统给出。

    10510

    PHP数组函数下与二维多维数组数组遍历(终点篇)

    数组分割为带有两个元素数组块:意思是我看一下,记住了呀,兄弟们,这像是二维数组一样吧,分成两个元素两个元素,第一个两个元素前面是(下标0),然后是第二个两个元素是(下标1)哈 ?...arr里面的元素,获取10个,原数组arr不够的话,用5补足. <?...意思是:删除数组最后一个元素array_pop函数哈 <?php $arr = [1,2]; array_unshift($arr, 3); var_dump($arr); ?> ?...php function show(&$num){ return $num = $num * 3; } $arr = [1,2,3];//对数组每个元素应用用户自定义函数: var_dump...可以应用啊,自定义函数可以执行哈 遍历: 意思是:foreach($arr as KaTeX parse error: Expected 'EOF', got '&' at position 6:

    1.6K30

    【C 语言】结构体相关 函数 指针 数组

    结构体概述 : 结构体是 多个 变量集合, 变量类型可以不同; -- 可进行操作 : 结构体可以进行 拷贝 赋值操作, 可以作为 函数参数 和 函数返回值; 1....; -- 访问成员 : 使用 结构体变量名.成员变量名 可以访问成员变量; 函数传递结构体方法 :  -- 传递结构体成员 : 结构体拆开, 将其中成员变量分别传入; struct class create_class...->name 分析 : 获取 结构体中 name 字符串值(注意不是指针|地址); -- *p++->name 分析 : 先获取 name 字符串值, 再将p自增; 结构体函数示例 : /****...* 为数组初始化 * 直接每个结构体成员值依次列出即可 */ struct student { char *name; int age; } team1[] = { "Tom", 12...high 和 low : 其中 low 是首元素 首地址, high 是 尾元素尾地址, 只有这样 它们 0.5 倍才是准确中值首地址; 指针指向数组注意点 : 不要生成非法指针, 指针不能指向数组之外元素

    3K20

    PHP七个数组指针函数

    PHP七个数组指针函数 ---- 序号 函数 描述 1 reset() 一个数组内部指针重置到首位,并返回第一个元素值 2 end() 一个数组内部指针移动到数组最后一个元素所在位置,并返回最后一个元素值...3 prev() 移动数组指针到上一位,返回该位值,当该位没有元素或是空数组时返回false 4 next() 移动数组指针到下一位,返回该位值,当该位没有元素或是空数组时返回false 5 key...() 返回当前指针所指向元素键,当指针所指那一位没有元素返回null,空数组返回null 6 current() 返回当前数组指针所指向值,指针移动超出了数组末尾或数组为空时返回false 7...each() 返回当前指针所指元素值和键,并且移动指针到下一位,从PHP7.2.0开始,此函数已被弃用 2. each() 从 7.2.0 开始被弃用,不推荐再使用 ---- Warning This...数组指针函数参数必须是一个变量 ---- 因为上面的数组指针函数都是引用值,所以数组指针函数参数必须是一个变量,而不能直接传给一个数组数据 $arr = ['张三', '李四', '王五'];

    57430

    【C 语言】二级指针作为输入 ( 指针数组 | 二级指针 作为函数输入 | 抽象函数业务逻辑 )

    文章目录 一、打印 指针数组指针指向字符串 二、字符串排序 三、代码示例 一、打印 指针数组指针指向字符串 ---- 打印 指针数组指针指向字符串 : 指针退化问题 : 传入二级指针..., 同时还要传入 一级指针个数 ; 实参是 指针数组 , 形参 退化为 二级指针 , 需要人为指定 数组元素个数 ; 验证指针合法性 : 函数中 , 只要是指针 , 就有可能为 NULL , 函数入口就要验证该指针合法性...[i]); printf("%s\n", *(array + i)); } return 0; } 二、字符串排序 ---- 指针数组 作为参数 , 传入函数中 ;...函数 二级指针 形参 , 既要作为 输入 , 又要作为输出 ; int sort_array(char **array, int num) { // 验证指针合法性 if(array...发现是 char , 说明指针指向数据是 char 类型 * * array 是一个数组 , 数组元素 char * 字符串 * * 这是 指针数组 ,

    58010
    领券