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

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

【进阶指针一】字符指针&指针数组&数组指针 https://blog.csdn.net/qq_64428099/article/details/125011487 目录  1.数组 1-2 二维数组...  2 指针 2-1 一级指针 2-2 二级指针 2-3 关于&arrarr 3 函数指针 3-1 函数指针的引入 3-2 函数指针的脱裤子放屁使用【先见一见基本操作】 3-3 试图看懂大佬写的代码... 4 函数指针数组 4-1函数指针数组的引入基本使用  4-2 函数指针数组的妙用 ----  1.数组 1-1一维数组 正向:实参给定,猜猜看形可以怎么写?...2 指针 反向:形给定,猜猜看实参可以怎么写?...// arr是二维数组数组名,表示的是一维数组的地址 return 0; } 2-3 关于&arrarr 2-3-1 这里以二维数组为例,讲一讲实参的匹配问题 void test1

87440

指针、引用区别

在C中,我们只了解到有两种方式,一种是值传递,另外一种是传递指针,一般情况下我们选择使用指针传递参数。在C++中,又新增了一种方式,那就是引用(type &),引用给我们带来了更好的体验。...2、指针传递 指针则解决了上面的两个问题,首先指针在32位系统下(64位系统是8字节)只有4个字节,无论数据多大,只要你将其指针传递给传输在压栈过程中只需要压一个4个字节的指针。...#include using namespace std; // 值传递,无法交换变量的值 // 另外注意:值传递引用传递函数重载时会出现二义性 // 程序不知道该重载哪个函数来使用。...int tmp = ra; ra = rb; rb = tmp; } int main(int argc, char* argv[]) { int x = 10; int y = 20; // 指针...// swap(&x, &y); // 引用 swap(x, y); cout << x << “–” << y << endl; getchar(); return 0; }

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

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

    []的优先级要高于*号的,所以必须加上()来保证p先*结合。​ int *p1[10];//指针数组,p1先[10]结合,说明p1是一个数组。...四、二维数组,形写二维数组 1、为什么一维数组,形可以是数组,也可以是指针?...1.写成数组更加直观,为了方便理解 2.写成指针是因为数组,传递的是数组的第一个元素的地址 二维数组,形写成数组也是可以的,非常直观,容易理解 2、形能写成指针吗?...return 0; } 二维数组 void Print(int (*arr)[5], int r, int c) { int i = 0; for (i = 0; i < r; i++)//...*)[5],那就意味着二维数组本质上也是传递了地址,传递的第一行这个一位数组的地址,那么形可以写成数组指针的形式 五、函数指针变量 函数指针变量的创建 函数指针用来存放函数的地址 1、回调函数

    37610

    C语言函数指针指针

    这是道哥的第013篇原创 前言 今天同事问了一个问题:在函数参数中传递指针指针,很常用的一个场景,重新梳理一下记录于此,以后如果有类似的问题直接发这篇小总结就可以了。...分析原因 我们可以把char*类型的指针看成一个遥控器,如果给这个指针赋值,就相当于把这个遥控器与一个设备进行绑定,可以通过遥控器来控制这个设备。...执行do_work(pData, 128); 这里传递的参数是pData本身,所以进入void do_work(char *p, int size)函数之后,实参pData的内容就赋值给形p,所以指针...执行do_malloc(&pData, 128); 把pData指针的地址作为实参进行传递,因为pData本身就是一个指针,加上取地址符&,就是指针指针(二级指针),因此do_malloc函数的第一个参数就要定义成...p此时是一个二级指针,参数赋值之后,p里面的内容就变成了pData这个指针变量的地址,也就是说p指向了pData这个变量。

    2.1K20

    C:数组的本质

    1、一维数组的本质 数组是指在函数调用时将数组作为参数传递给函数。...void test(int arr[])可以写为void test(int* arr) 注意: 一维数组的时候,形可以写成数组的方式,主要是为了方便理解,形也可以写成指针变量的方式 如果我们想要在函数内部获取数组元素的个数...从上图中,我们可以看到二维数组传递的也是数组名,数组名是什么呢? 数组名是数组首元素的地址,所以二维数组实参传递的是地址,既然传递的是地址,那么形也就可以使用指针来接收。...二维数组传递的不是二维数组,而是二维数组首元素的地址,也就是第一行的地址,所以形的部分要拿数组指针来接收。...3、总结: 数组传递的都是地址,所以形都可以使用指针来接收 一位数组传递的是首元素地址,使用(类型)指针来接收, 二维数组传递的是一维数组的地址,使用数组指针来接收 本篇文章到这里就结束了

    6510

    c专题之指针----指针与函数输入、输出型参数

    一、指针与函数: 1、普通变量作为函数形: (1)函数时,普通变量作为参数时,形实参名字可以相同也可以不 同,实际上都是用实参来替代相对应的形的。...因为时是值,所以这两个没区别)。所以在子函数内部,进来的数组名就等于是一个指向数组首元素首地址的指针。...(2)在子函数内传得到的数组首元素首地址,外面得到的数组首元素首地址的值是相同的。...因为数组名做形传递的实际只是个指针,根本没有数组长度这个信息。...: (1)和数组作为函数形是一样的.这就好像指针方式访问数组元素和数组方式访问数组元素的结果一样是一样的。

    1.7K20

    数组指针指针数组

    一、数组指针 初学C语言的朋友对数组指针指针数组感到迷惑,分不清,包括我自己,其实是对概念的不清晰以及对数组指针这两个概念理解的不够深入,下面谈谈我的理解。...数组指针,是一个指针而不是数组。 这个指针具有指向整个数组的能力,保存这个数组的其实地址。...是数组指针变量 二、指针数组 指针数组,是一个数组,而不是指针。...,这个指针指向.rodata对应的常量字符串 指针数组的应用 完整的main函数原型,int main(int arc,char* argv[],char* envp[]) 其中,两个数组分别保存命令行参数环境变量...为了提高程序执行的效率,C语言不做数组下标的安全性检查。如果进行了检查当数组数据量非常大时候会显著减低程序的效率,在安全性高效率之间,权衡利弊之下。

    76310

    c语言二维数组参数_c语言数组

    初遇二维数组作函数参数,宛如自己化身为了大头儿子。很头大。 不禁大声呐喊:该怎么声明定义,该怎么调用,又该怎么函数中操作元素地址? 在此,我要拨开这些问题的一些迷雾。...第一种形为二维数组 声明 void function(int a[m][n]);//函数声明 void function(int a[][n]);//不论多少维数组,第一维都可省略。...第二种形数组指针 (其实只是 声明定义 与第一种不同,其他一样) 声明 void function(int (*a)[n]); //不是(int *a[n])(指针数组) ,而是(int (*a)...第三种形为二级指针 声明 void function(int **a,int n);n表示第二维数组长度,即列宽 调用 function( (int **)a,int n);//实参不能为数组名!...(都是指针) 调用(一对一,二对二) 数组指针,二维数组就写一级指针数组名.

    2.8K10

    指针数组做main函数的形

    指针数组 1.1 基本概念 指针数组是指一个数组,其中的每个元素都是指针。 这意味着数组中的每个元素都存储一个地址,该地址指向内存中的某个位置。...指针数组的声明形式为: data_type *array_name[size]; //示例: int *p[10];//该指针数组包含10个整型地址 1.2 简单示例 以下是一个简单的示例,演示了如何声明使用指针数组...*intArray[3]; // 声明一个包含3个整型指针数组 // 将指针指向整型变量 intArray[0] = &num1; intArray[1] = &num2;...指针数组做main形 2.1 int main(int argc, char *argv[]); 指针数组的一个重要应用是做main函数的形。...2.2 简单示例 下面例子中,argc 表示命令行参数的数量,而 argv 是一个指针数组,其中每个元素都是一个指向字符串的指针。程序通过循环遍历 argv 数组,输出每个命令行参数的内容。

    10510

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

    &arr[0]arr都是首元素的地址,+1就是跳过一个元素 4.因为&arr是数组的地址,+1的操作是跳过整个数组的 四.使用指针访问数组 1.因为数组在内存中是连续存放的。...数组的时候形是不会创建数组的,实际上传的是首元素的地址,发生了数组降级 void test(int arr[]) //int *arr { int sz = sizeof(arr) / sizeof...//test(arr);//这里的数组名就是数组首元素地址 Print(arr,sz); return 0; } 六、址调用值调用 值调用:的是变量,值调用 int Add...//数组名是数组首元素的地址 printf("%zd\n", len); return 0; } 6.2为什么有值两种调用方式 因为有一些问题是不使用指针无法解决的!!!...值调用函数时,函数的实参传给形,形是实参的一份拷贝 形有自己独立的空间,对实参的修改不会影响实参!!!

    18610

    『云函数』调试

    1.前言好了,经过上篇文章的介绍,给大家详细的介绍了云函数的基本使用,以及为什么要使用云函数,那么接下来我们就来看看云函数的调试。...云函数async onCloudFnParamTap() { const...点击本地调试,会弹一个对话框点击是,就是安装所需要的依赖库:然后观察微信小程序的终端就会去下载依赖:下载完毕之后本地调试界面就成了如下图所示的样子:这个时候就会浏览器差不多咯,然后我们再次来点击调用云函数按钮来看看效果...本地调试输出内容:可以看到,这个时候就有我们想要的结果了,那么这个时候关于云函数的调试就介绍完毕了。本篇文章内容介绍到这就结束了,我们下期再见,感谢大家的观看,谢谢大家。...您的每一个动作都是对我创作的最大鼓励支持。谢谢您的阅读陪伴!感谢您的支持,我会继续努力的!我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

    47121

    指针变量的

    原因:在func函数调用过程中,形实参的传递使用了值传递方式,这种情况下,形参变量在函数体内发生了变化,在函数结束之后,形参变量随之释放,不能把变化的结果返回给实参。...因为引用不是对象,故无引用的数组,无指向引用的指针,无到引用的引用: int& a[5]; // 错误 int&* p; // 错误 int& &r; // 错误 所以修改函数int func...、引用区别联系 值:实参拷贝传递给形。...复制完毕后实参的地址的地址没有任何联系,对实参形地址的修改不会影响到实参, 但是对形地址所指向对象的修改却直接反应在实参中,因为形指向的对象就是形的对象。...无论值还是指针,函数都会生成一个临时变量,但引用时,不会生成临时变量, 值时,只可以引用值而不可以改变值,但值引用时,可以改变值, 指针时,只可以改变指针所指的内容,不可以改变指针本身,但指针引用时

    2K30

    指针变量的

    原因:在func函数调用过程中,形实参的传递使用了值传递方式,这种情况下,形参变量在函数体内发生了变化,在函数结束之后,形参变量随之释放,不能把变化的结果返回给实参。...因为引用不是对象,故无引用的数组,无指向引用的指针,无到引用的引用: int& a[5]; // 错误 int&* p;   // 错误 int& &r;   // 错误 所以修改函数int func(...、引用区别联系 值:实参拷贝传递给形。...复制完毕后实参的地址的地址没有任何联系,对实参形地址的修改不会影响到实参, 但是对形地址所指向对象的修改却直接反应在实参中,因为形指向的对象就是形的对象。...无论值还是指针,函数都会生成一个临时变量,但引用时,不会生成临时变量, 值时,只可以引用值而不可以改变值,但值引用时,可以改变值, 指针时,只可以改变指针所指的内容,不可以改变指针本身,但指针引用时

    2.8K40
    领券