首页
学习
活动
专区
工具
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一维数组参 正向:实参给定,猜猜看形参可以怎么写?...对于多维数组定义或者参时,只有第一维数组的数组元素可以省略,其余维必须写上,且必须写对!!! 2 指针参 反向:形参给定,猜猜看实参可以怎么写?...2-1 一级指针参 void test1(int* ptr)//一级指针:存放普通变量的地址 { //... } int main() { int a = 10; int* p = &a;

87440

参、指针参、引用参区别

在C中,我们只了解到有两种参方式,一种是值传递,另外一种是传递指针,一般情况下我们选择使用指针传递参数。在C++中,又新增了一种参方式,那就是引用(type &),引用参给我们带来了更好的体验。...2、指针传递 指针则解决了上面的两个问题,首先指针在32位系统下(64位系统是8字节)只有4个字节,无论数据多大,只要你将其指针传递给传输在压栈过程中只需要压一个4个字节的指针。...又取得的指针的优良特性。所以再对引用取地址,建立引用的指针没有意义。...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; }

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

    指针变量的值和

    可以使用指针传递或者引用传递。想要在函数体内改变pRes的值,并把这个变化返回到main函数中,必须传递pRes的指针。因为pRes本身就是指针,所以应该传递指针指针,或者指针的引用。...、引用区别和联系 值:实参拷贝传递给形参。...地址:把实参地址的拷贝传递给形参。就是把实参的地址复制给形参。...引用:本质没有任何实参的拷贝,两个变量指向同一个对象。这是对形参的修改,必然反映到实参上。...无论值还是指针,函数都会生成一个临时变量,但引用时,不会生成临时变量, 值时,只可以引用值而不可以改变值,但值引用时,可以改变值, 指针时,只可以改变指针所指的内容,不可以改变指针本身,但指针引用时

    2K30

    指针变量的值和

    可以使用指针传递或者引用传递。想要在函数体内改变pRes的值,并把这个变化返回到main函数中,必须传递pRes的指针。因为pRes本身就是指针,所以应该传递指针指针,或者指针的引用。...、引用区别和联系 值:实参拷贝传递给形参。...地址:把实参地址的拷贝传递给形参。就是把实参的地址复制给形参。...引用:本质没有任何实参的拷贝,两个变量指向同一个对象。这是对形参的修改,必然反映到实参上。...无论值还是指针,函数都会生成一个临时变量,但引用时,不会生成临时变量, 值时,只可以引用值而不可以改变值,但值引用时,可以改变值, 指针时,只可以改变指针所指的内容,不可以改变指针本身,但指针引用时

    2.8K40

    golang面试基础系列-值&指针(二)

    在 Go 中函数传递参数有值和指针两种类型,本文将从细节之处剖析两者的不同。...仔细思考,原来就是今天要分析的 Golang 中关于函数值与指针的区别没搞清楚。...接下来,我们看一下指针的情况: package main import ( "encoding/json" "fmt" ) type Girl struct { Name...g0: 0xc42000c028 g1: 0xc42000c038 {"name":"yueyue","dress_color":"white"} 所以,在 Golang 中所有函数参数传递都是值拷贝,指针只是拷贝了一份指针副本...小结:在函数参过程中,需要合理使用值、指针。一般情况下,需要改变原始对象值、传递大的结构体,指针是最合适的,因为一个内存地址的开销很小。

    90220

    C语言函数参:指针指针

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

    2.1K20

    【C语言】指针进阶之值调用与址调用

    1.前言 学习指针的⽬的是使⽤指针解决问题,那什么问题,⾮指针不可呢? ✔在编程语言如C中,值调用和址调用是用来传递参数给函数的方法。...它们的主要区别在于参数传递的方式: ☞值调用:这是最基本的参数传递方式,它涉及将参数的值复制一份传递给函数。...☞址调用:这种方式则是将参数的地址传递给函数。这样做的目的是让函数能够直接访问到传入的参数,并且可以对这些地址指向的数据进行修改。...✔址调⽤,可以让函数和主调函数之间建⽴真正的联系,在函数内部可以修改主调函数中的变量; 4.结论 所以未来函数中只是需要主调函数中的变量值来实现计算,就可以采⽤值调⽤。...如果函数内部要修改主调函数中的变量的值,就需要址调⽤。

    12810

    函数参数的值和指针有什么区别?

    指针 那么为解决上面的问题,我们知道,需要指针。...为什么又有值,又有指针 看到这里,不知道你是否会疑惑,为什么给函数传递参数的时候,一会是值,一会是指针呢?为什么指针就能改变参数的值呢?实际上,C语言里,参数传递都是值传递!...也就是说,你认为的指针也是值,只不过它的值是指针类型罢了。 我们再通过图来理解前面为什么指针就可以交换a,b的值: ?...再看指针 如果是为指针p申请一段内存,下面的代码能达到目的吗?...getMemory 总结 本文总结如下: 函数的参数都是原数据的“副本”,因此在函数内无法改变原数据 函数中参数都是值,指针本质上也是值 如果想要改变入参内容,则需要该入参的地址(指针和引用都是类似的作用

    3K30

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

    一、二级指针 问:指针变量也是变量,是变量就有地址,那指针变量的地址存放在哪里?...四、二维数组参,形参写二维数组 1、为什么一维数组参,形参可以是数组,也可以是指针?...1.写成数组更加直观,为了方便理解 2.写成指针参是因为数组参,传递的是数组的第一个元素的地址 二维数组参,形参写成数组也是可以的,非常直观,容易理解 2、形参能写成指针吗?...int arr[3][5] = { {1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7} }; Print(arr,3,5);//打印arr数组内容 return 0; } 二维数组参...int(*)[5],那就意味着二维数组参本质上也是传递了地址,传递的第一行这个一位数组的地址,那么形参可以写成数组指针的形式 五、函数指针变量 函数指针变量的创建 函数指针用来存放函数的地址

    37010

    python参是值还是引用

    在此之前先来看看变量和对象的关系:Python 中一切皆为对象,数字是对象,列表是对象,函数也是对象,任何东西都是对象。而变量是对象的一个引用(又称为名字或者标签),对象的操作都是通过引用来完成的。...因此,如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“引用”来传递对象 例2 def test2(p): p = "i in test2" print(p,...因此,如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象--相当于通过“值'来传递对象。 总结: Python参数传递采用的肯定是“传对象引用”的方式。...这种方式相当于值和引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“引用”来传递对象。...如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象--相当于通过“值'来传递对象。

    3.6K150

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

    因为参时是值,所以这两个没区别)。所以在子函数内部,进来的数组名就等于是一个指向数组首元素首地址的指针。...很多人把这种特性叫做“址调用”(所谓的址调用就是调用子函数时了地址(也就是指针),此时可以通过进去的地址来访问实参。) (3)数组作为函数形参时,[]里的下标数字是可有可无的。...思路只有一个那就是不要变量了,改变量的指针(地址)进去。...(3)结构体因为自身太大,所以参应该用指针(但是程序员可以自己决定,你非要结构体变量过去C语言也是允许的,只是效率低了)。...函数参如果的是普通变量(不是指针)那肯定是输入型参数;如果指针就有2种可能性了,为了区别,经常的做法是:如果这个参数是做输入的(通常做输入的在函数内部只需要读取这个参数而不会需要更改它)就在指针前面加

    1.6K20

    值还是指针, 常见数据类型总结一览

    传递指针还是传递值 在 golang 中,不论传递指针还是传递值(内容), 其实都是传递的「值副本」。...区别在于 前者(传递指针)传递的是 「指针的值副本」, 指针的副本也同样指向相同的内存块。就像复制后的钥匙可以打开原配的锁。 后者(传递内容)传递的是 「内容的值副本」。...不同类型的副本创建 bool,数值和指针 bool和数值类型一般不必考虑指针类型,原因在于这些对象很小,创建副本的开销可以忽略。只有你在想修改同一个变量的值的时候才考虑它们的指针。...*T创建的副本的元素时元数组元素指针的副本。 map、slice 和 channel 网上一般说, 这三种类型都是指向指针类型,指向一个底层的数据结构。...函数 函数也是一个指针类型,对函数对象的赋值只是又创建了一个对次函数对象的指针

    91720
    领券