C语言指针与函数传参

指针与函数传参

  • 普通变量与函数形参
  • 数组作为函数形参
  • 结构体变量作为函数形参
  • 传值调用和传址调用
  • 输入型参数和输出型参数
    • 函数的形参和返回值
    • 函数传参中使用const指针
    • 函数如何向外部返回多个值
    • 总结

普通变量与函数形参

函数传参时普通变量作为参数,形参和实参名字可以相同也可以不同,实际上都是用实参来代替形参的。
在子函数的内部,形参值等于实参。原因是函数调用时把实参的值赋给了形参。
这种就叫做传值调用。

数组作为函数形参

数组名作为形参传参的时候,实际传递的不是整个数组,而是数组的首元素的首地址。在子函数内部,传进来的数组名就等于是指向数组首元素的指针,所以sizeof得到4.
在子函数内传参得到的数组首元素首地址,和外面得到的数组首元素首地址的值是相同的,被人们称为传址调用,此时可以通过传进去的地址来访问实参。
数组作为函数形参时,[]里的数字是可有可无的,因为数组名作为形参传递实际只是个指针,根本没有数组长度这个信息。
指针作为函数形参和数组作为函数形参是一样的。

结构体变量作为函数形参

结构体变量作为函数形参的时候实际上和普通变量传参时表现是一模一样的,所以说结构体变量其实也只是普通变量而已。
因为结构体一般都很大,所以我们在传递结构体变量的时候一般都传入变量的地址。

传值调用和传址调用

传值调用实际上自己本身并没有进入到子函数内部,只是拷贝了一份自己的副本和自己具有一样的数值进入

你可能感兴趣的:(C和C++完整教程)