美文网首页
C/C++ 函数内部修改形参

C/C++ 函数内部修改形参

作者: 大白龙 | 来源:发表于2020-05-20 10:26 被阅读0次

参数传递一般有两种传递方式:

1)值传递----包括(数值传递,指针传递)

数值传值,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个形式参数,因而在函数里对形参的改变不会影响到函数外的变量的值。
指针传递,就是传变量的地址赋给函数里形式参数的指针,使指针指向真实的变量的地址,因为对指针所指地址的内容的改变能反映到函数外,也就是能改变函数外的变量的值。

2)引用传递

引用传递,实际是通过指针来实现的,能达到使用的效果如传址,可是使用方式如传值。
说几点建议:如果传值的话,会生成新的对象,花费时间和空间,而在退出函数的时候,又会销毁该对象,花费时间和空间。

\color{#FF0000DD}{因而如果int,char等固有类型,而是你自己定义的类或结构等,都建议传指针或引用,因为他们不会创建新的对象。}

示例

void GetMemory( char*p )
{
 p = (char*) malloc( 100 );
}
void Test( void ) 
{
 char*str = NULL;
 GetMemory( str ); 
 strcpy( str, "hello world" );
 printf( str );
}

传入中GetMemory(char *p )函数的形参为字符串指针,在函数内部修改形参并不能真正的改变传入形参的值,执行完

char *str = NULL;
GetMemory( str ); 

后的str仍然为NULL;

原因

你虽然将Test中的指针地址传过去了,char p确实也接受到了,但是:
p = (char
) malloc( 100 );这条语句中,malloc会返回一个新的地址,同时赋值给p,p已经不是原来的地址了。
此时,p是指向一块大小为100的空间。但是str还是指向NULL;

图谱.png

相关文章

  • C/C++ 函数内部修改形参

    参数传递一般有两种传递方式: 1)值传递----包括(数值传递,指针传递) 数值传值,就是把你的变量的值传递给函数...

  • 1.加深记忆:OC知识点截图

    1. C语言函数知识: (1)如果函数形参是基本数据类型,意味着值传递,修改函数内部形参不会影响外面实参的值;如果...

  • 函数变参的使用

    介绍C/C++,java,和go语言对函数变参的使用。 1. C/C++语言的变参 1.1 变参函数声明 变参函数...

  • C语言小码哥指针<|重点|>

    函数一些小技巧: 如果函数的形参是基本类型(如:int float double char)那么在函数内部中修改形...

  • C++引用

    什么是引用 引用其实就是变量的别名,在C++中,它主要用作函数形参,于是函数可以修改传入参数的原始数据,而不在是数...

  • C++ 函数的默认参数详解

    在 C++ 中,定义函数时可以给形参指定一个默认的值,这样调用函数时如果没有给这个形参赋值(没有对应的实参),那么...

  • C++系列 --- 类型转换:static_cast、reint

    一、隐式类型转换 《C++ Primer》中提到: “可以用 单个形参来调用 的构造函数定义了从 形参类型 到 该...

  • [C++]引用形参和指针形参的使用场景

    [C++]引用形参和指针形参的使用场景 在设计函数时,应根据传入参数的值是否会被改变,来决定是使用引用形参还是指针...

  • chapter-6

    C++ Primer第六章! //函数包含返回类型声明、函数名、形参、实参、函数体等等部分,另外可以对函数进行重载...

  • JavaScript进阶之:七、值类型和引用类型在函数中的使用

    函数的参数:形式参数(形参):在函数声明的时候,写在()中的变量,形参在函数内部作为局部变量使用,形参用来占位实际...

网友评论

      本文标题:C/C++ 函数内部修改形参

      本文链接:https://www.haomeiwen.com/subject/talgohtx.html