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

c++:*与&, *&p, 指针传递,引用传递,数组

,&p为p的地址 (取包有内容p的盒子的编号) 再进行解引用(拆开盒子),所以得到 *&p = p 指针传递 出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。...”; } void main() { int b = 10; test(&b); cout << “b的值:” << b << “\n” << “b的地址:” << &b << “\n”; } ...10; test(b); cout << “b的值:” << b << “\n” << “b的地址:” << &b << “\n”; } 相当于变量的别名,函数内后续的任何改变都会影响原变量 数组...当要使用数组作为函数时,因为一个数组不能使用另外一个数组初始化,也不能将一个数组赋值给另外一个数组,而在“1.1 非引用”中提到要用实参的副本来初始化形,所以实参为数组时,不能直接传递给...则可以用如下三种方式定义该函数: int FindMax(int* array); int FindMax(int array[]); int FindMax(int array[10]); 虽然不能直接传递数组,但是函数的可以写成数组的形式

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

    【JavaScript】函数 ③ ( 与 实参 匹配问题 | 实参个数 = 个数 | 实参个数 > 个数 | 实参个数 < 个数 )

    ; 在 JavaScript 中 , 对 和 实参 的 匹配要求比较宽松 , 即使二者 个数 不匹配 , 也不会报错 ; 2、参与实参个数匹配 如果 实参 的个数 , 与 个数一致 , 则正常输出结果...传入 2 个实参, 输出正常结果 add(1, 2); 输出结果为 3 ; 3、实参个数 > 个数 如果传入的 实参个数 大于 个数 , 则取 个数个 实参 ; 下面的代码中..., 有 2 个 , 传入 3 个实参 , 此时函数只接受 前 2 个实参 , 第 3 个实参不接收 , 也就不参与函数运算 ; // 定义函数 有 2 个 function...如果 传入的 实参个数 小于 个数 , 那么 后面 没有实参对应的 , 就被当做 声明后未赋值的变量 , 默认值就是 undefined ; 下面的 add 函数中 , 定义了 2 个...传入 1 个实参, 第二个默认为 undefined add(6); 最终的计算结果如下 , num2 未找到与之对应的 实参 , 因此其取值 undefined 默认值 ,

    10210

    指针数组做main函数的

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

    9910

    matinal:ABAP 实参、引用传递、值传递

    当过程(指的是方法,函数,子例程)被调用的时候,实参要被传递到,传递的方法有引用传递(pass by reference)和值传递(pass by value)两种,这两种方式是在过程的参数接口中定义的...,会产生一个数据对象的副本,输出参数和返回值在过程调用的时候会被初始化,而值传递更适合鲁棒性和数据一致性很重要的场景         在实际应用中当决定形使用引用传递还是值传递的时候,主要是基于每种传输类型的性能和鲁棒性来考虑的...当输出参数设置为引用传递: 输出结果:BEF  123 当输出参数设置为值传递时: 输出结果: 123 如果过程因为错误停止(也就是,由于程序RETURN,EXIT,CHECK后停止),通过引用传递的实参会保留被传递的值...(formal parameter):根据他们的类型指定,他们可以像过程中的数据对象一样的方式使用,是过程签名的实质部分,既可以是位置参数(positional parameters)(对于子例程...实参(actual parametes):是一种数据对象,他的内容作为参数传递给,或者是当过程被调用的时候从这个中取到的内容就是实参,也可以传递功能方法或者计算表达式作为实参进行参数传。

    24340

    【C 语言】字符串模型 ( strstr-while 模型 | 抽象函数模型 | 业务子函数接口定义要点 | 指针间接赋值 | 返回值状态 | 指针处理 | 指针判空 | 返回值 )

    : 定义 局部 临时 指针变量 , 接收 函数参变量 , 尽量不修改 函数 的值 ; 指针判空 : 凡是传入的指针 , 一律判定指针是否合法 ; 返回值处理 : 返回值不要直接修改 ,...先定义临时局部变量保存返回值 , 最后执行完毕 , 再将返回值 通过 间接赋值 赋值给 中的 返回值指针 指向的 内存地址 ; /* * 获取字符串中子串个数接口 * char *main_str...的值 , 使用指针变量接收 函数 char *main_str_tmp = main_str; char *sub_str_tmp = sub_str; // 返回值临时值..., 先不要修改 sub_count 指针指向的值 , 最后计算完毕后再修改 int sub_count_tmp = 0; // 判定指针是否合法 // 如果指针为 NULL..., 先不要修改 sub_count 指针指向的值 , 最后计算完毕后再修改 int sub_count_tmp = 0; // 判定指针是否合法 // 如果指针为 NULL

    3.2K10

    指针,需要注意的问题。

    最近在写链表的时候,定义了一个指针,当指针作为函数参数传的时候出现了问题: 定义了一个空指针: int * end=NULL; 指针作为参数,目的可以指向申请的内存: void func(int...* P) { int * P_1 = (int *)malloc(sizeof(int)); P=P_1; } 但是当该函数被调用后,该指针end依旧为NULL,通过上述例子,我们可以看到...,一级指针作为函数参数时,在函数体内对指针做变动,当函数被调用结束后,原始指针不会产生任何变化。...但是指针作为函数值返回时则没有问题: int * P = func(); int * func() { int * P_1 = (int *)malloc(sizeof(int)); return...,引入变量地址来解决交换,现在也一样,我们想改变一级指针,自然就需要二级指针来解决问题,所以,你明白了吗。

    82530

    【C 语言】数组 ( 一维数组退化 | 二维数组退化 | 函数等价关系 )

    文章目录 一、一维数组退化 二、二维数组退化 三、数组等价关系 一、一维数组退化 ---- C 中将 一维数组 作为参数 , 传递到函数中 , 该 一维数组 会退化为 指针 ; 将 int...; void fun(int (*array)[20]) { } 三、数组等价关系 ---- 实参为 一维数组 int array[10] , 等效的 为 一级指针 int *array ;...一维数组 , 直接退化为 指向 数组元素的指针 , 数组元素是 普通类型 , 指向普通类型的指针 , 即 一级指针 ; 实参为 指针数组 int *array[10] , 等效的 为 一级指针 int...**array ; 指针数组 是 数组的元素 都是 指针变量 ; 数组退化为 指针 , 指针指向的元素 也是 指针 , 则为 二级指针 ; 实参为 二维数组 int array[10][20] ,...等效的 为 一级指针 int (*array)[20] ; 二维数组 的 数组的元素 是 一维数组 ; 外围数组 ( 第二维 ) 退化为 指针 , 指针 指向的元素 是 一维数组 , 则为 指向

    2.8K10

    -实参概念剖析

    :即函数的自变量,其初值来源于函数的调用。只有在程序执行过程中调用了函数,才有可能得到具体的值,并参与运算求得函数值。...和实参的区别: 1、英文名字不同:是parameter,实参是argument。 2、本质不同:的本质是一个名字,不占用内存空间。实参的本质是一个变量,已经占用内存空间。...站在函数里面,你能看到的函数参数就是--。 //内部有效 2 .站在函数外面,你调用函数输入的参数就是--实参。...所谓的实参害人不浅,概念的抽象应该是简化和解释逻辑,结果这个两个名称最让初学者理解不了。应该是最初翻译带来的弊端。 举例: 1....比如你定义一个函数void add(int a, int b),这里的a和b就是。 2. 当你进行函数调用的时候,add(1, 2),这里的1和2就是实参。

    1.3K20

    c语言函数指针的用法_函数指针作为

    文章目录 导引 指针函数 指针函数定义 指针函数的三种写法 代码示例 函数指针 定义 代码示例 函数指针指针函数区别 定义不同 写法不同 用法不同 导引 函数指针指针函数,在学习 C 语言的时候遇到这两个东西简直头疼...,当然还有更头疼的,比如什么函数指针函数、指针函数指针、数组指针指针数组、函数指针数组等等,描述越长其定义就越复杂,当然理解起来就越难,特别是刚开始学习这门语言的童鞋,估计碰到这些东西就已经要崩溃了,...指针函数 指针函数定义 指针函数,简单的来说,就是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。...函数指针 定义 函数指针,其本质是一个指针变量,该指针指向这个函数。总结来说,函数指针就是指向函数的指针。...函数指针指针函数区别 通过以上的介绍,应该都能清楚的理解其二者的定义。那么简单的总结下二者的区别: 定义不同 指针函数本质是一个函数,其返回值为指针。 函数指针本质是一个指针,其指向一个函数。

    61720

    python 引用传递和值传递详解(实参,)

    : 函数需要传递的参数 实参:调用函数时传递的参数 补充知识:python函数方法实参给传值时候的隐形‘陷阱’ 众所周知,在python函数里面参数分为,实参两种。...当然了就是形式参数,而实参是我们需要给这个函数传入的变量,在我们给实参传入变量之后,调用函数,实参则自动会把数值或则变量赋予,从而通过函数得出我们想要的结果。...既然是由实参赋值传递,所以说的位置顺序至关重要,稍有疏忽,程序可能就会出错。那么下面就来帮大家在初学的时候如何让更好的避开这些隐形的陷阱。...4.命名关键字参数 所谓的命名关键字参数就是在里面我们有一个对应的符号,然后在传入参数的时候,我们以符号赋值的形式传入参数,这样做就是能让我们避免因顺序错误产生的程序错误。...以上这篇python 引用传递和值传递详解(实参,)就是小编分享给大家的全部内容了,希望能给大家一个参考。

    3.5K00

    值传指针引用区别

    在C中,我们只了解到有两种传方式,一种是值传递,另外一种是传递指针,一般情况下我们选择使用指针传递参数。在C++中,又新增了一种传方式,那就是引用(type &),引用给我们带来了更好的体验。...2、指针传递 指针则解决了上面的两个问题,首先指针在32位系统下(64位系统是8字节)只有4个字节,无论数据多大,只要你将其指针传递给传输在压栈过程中只需要压一个4个字节的指针。...并且在函数内部还可以通过指针修改指针指向地址中的数据以作为传出数据的作用。 3、引用传递 引用作为一个变量的别名,相当于一段内存的引用。...在传递给函数时相当于包装了原变量指针的地址传递给函数,可以理解为在函数中直接使用原变量进行操作,而且这个期间不会出现拷贝的行为。引用的本质是指针,C++对裸露的内存地址(指针)作了一次包装。...又取得的指针的优良特性。所以再对引用取地址,建立引用指针没有意义。

    31940

    【C 语言】字符串模型 ( 字符串翻转模型 | 抽象成业务函数 | 返回值 | 函数返回值 | 函数处理 | 指针判空 )

    、完整代码示例 一、字符串翻转模型 业务函数 ---- 将上一篇博客 【C 语言】字符串模型 ( 字符串翻转模型 ) 的代码 , 主要业务逻辑 , 抽象成函数 ; 字符串翻转模型 业务函数 要点 : 返回值...: 函数的返回值 , 一般使用 函数 间接赋值 进行返回 ; 下面的代码中 char *str 是返回值 ; int inverse(char *str) 函数返回值 : 函数的返回值 , 反映的是函数的执行结果状态..., 返回 0 执行成功 , 返回 -1 执行失败 ; 函数处理 : 在 函数中 , 如果涉及到修改 指针变量 , 一般不直接使用 , 创建一个临时局部变量 , 接收 , 然后再执行相关操作...; // 创建临时变量接收 函数 , 不要直接改变形的函数指向 char *str_tmp = str; 指针判空 : 函数的第一项任务就是 判定 指针是否合法 , 如果任何一个指针为空...include #include /* * 将参数字符串翻转 */ int inverse(char *str) { // 创建临时变量接收 函数

    92610

    C语言和实参的区别?

    实参是程序中已经分配了内存空间的参数,它可以被赋予一个具体的值,比如常数、数组、地址(指针),也可以是一个变量名、数组名或表达式,当然也包括指针变量。...则是你在写一个被调函数时,为了说明用到的自变量的类型、要进行什么操作而定义的,在调用函数前它不会被分配内存空间,更不会被赋予具体的值。...调用函数时,参会被分配一个新的内存空间,实参的值就会被“复制”进去,让它在被调函数中参与运算。而实参本身不参与这个运算,它仅仅起到一个传递值的作用(不过在C++中可以用&改变实参的值)。...如果参数的形式是指针,那么“复制”的就是地址。

    1.7K10
    领券