1.值传递方式

值传递是实际参数向形式参数传递参数值的一种方式

值传递的特点是“参数值的单向传递”,对实参没有任何影响,被调用函数

2.地址传递方式

地址传递方式是实际参数向形式参数传递内存地址的一种方式。

调用函数时,将实际参数的地址赋予对应的形式参数作为其地址。由于形式参数和实际参数地址相同,即它们占用相同时间的内存空间。所以发生调用时,形式参数值的改变会影响实际参数的值

3.数组作为函数参数

数组作为函数的参数,进行数据的传递。

一种是把数组元素作为实际参数使用:数组元素可以看成一个普通变量,因此他作为函数实际参数使用时与普通变量完全相同,在发生函数调用时,把实际参数的数组元素的值传送给形式参数,实现单向的值传递。

另一种是把数组名作为函数的形式参数和实际参数使用:

(1)用数组名做函数参数时,要求形式参数和相对应的实际参数都必须是类型相同的数组,都必须有明确的数组说明。

(2)在用数组名做函数参数时传递的不是值,因为函数名就是数组的首地址,因此在数组名作函数参数时传送的是地址,也就是说把实际参数数组的首地址赋予形式参数数组名。形式参数数组名取得该首地址之后,也就等于获得了实际的数组。

4.指针变量作为函数参数

函数的参数可以是整型,实型,字符型等基本数据类型,还可以是指针类型。使用指针作为函数的参数,实际上向函数传递的是变量的地址。

(1)C语言中实参变量和形参变量之间的数据传递是单向的“值传递”方式,用指针变量作为函数参数时同样要遵循这一规则。

(2)不可能通过执行调用函数来改变实参指针变量的值,但是可以改变实参指针变量所指变量的值

注意:

p是指针变量,*p是p指向的变量的值。

假设有一个形参和实参那么就有

这两者的的区别:

void swap(int* p1, int* p2)
{
    int* p;         /*在函数中定义一个局部指针变量p*/
    p = p1;        /*通过指针p将传递过来的形参p1和p2进行交换*/
    p1 = p2;       //使p1和p2的值互换。
    p2 = p;
}

void swap(int* p1, int* p2)
{
    int p;
    p = *p1;
    *p1 = *p2;     //*p1,*p2交换意味着p1和p2指向的存储单元的值进行了交换
    *p2 = p;
}

通常用整型变量而非指针变量作为*p1和*p2进行交换的辅助变量。

5.结构体数组作为函数参数

结构体数组做函数参数,可以分为两种情况:结构体数组名作为函数参数和结构体数组元素作为函数参数。

结构体数组的定义和初始化:

1.先定义结构体类型,再定义结构体数组。

struct student

{

int num;

char name[20];

char sex;

float score;

};

struct student stu[30];

2.在定义结构体类型的同时定义结构体数组。

struct student

{

int num;

char name[20];

char sex;

float score;

}stu[30];

3.直接定义结构体数组。

struct

{

int num;

char name[20];

char sex;

float score;

} stu[30];

C语言知识点——函数参数相关推荐

  1. C语言 main 函数参数 main(int argc, char *argv[]) - C语言零基础入门教程

    目录 一.main 函数写法 二.main 函数参数简介 三.使用 main 函数参数 1.打印 main 函数参数 a.直接运行 exe 文件 b.打开 cmd 命令行窗口执行 exe 文件 c.打 ...

  2. c语言中函数参数为空是什么意思,C语言函数参数为空和void

    C语言中函数参数的为空和用void标注他们的效果一样吗? #include 2 //int add(); 3 int add(void); 4 int main(void) 5 { 6     int ...

  3. c语言中函数参数处理顺序以及默认参数原则

    c语言中函数参数处理顺序 下面我们来看2个案例,分析下c语言中函数参数处理顺序. 第一个: #include "stdio.h"void fn(int a,int b,int c) ...

  4. C语言通过函数参数不能带出动态内存的例子。

    实验结论:通过函数参数不能带出动态内存,函数参数虽然为指针,其实是在函数内部的临时变量,只是该指针的初始值是通过调用函数赋值的.C语言函数参数都是传值的. #include <stdio.h&g ...

  5. r语言 fread函数参数_R语言 第4章 初级绘图(6)

    分析数据间的关系 散点矩阵图 如果数据框是多维数据,那么plot函数将绘制出两两之间散点图组合成为散点矩阵图(matrix of scatterplots).散点矩阵图将多个散点图组合起来,以便可以同 ...

  6. C语言main函数参数详解

    main函数参数 一共有三个: 1.int argc 整型变量 2.char *argv[] 字符指针的数组,通俗一点就是字符串数组,每个元素都是字符串 3.char *envp[] 字符串数组 这三 ...

  7. C语言main函数参数、返回值

    C语言main函数返回值: main函数的返回值,用于说明程序的退出状态.如果返回0,则代表程序正常退出:返回其他数字的含义则由系统决定,通常,返回非零代表程序异常退出,即使程序运行结果正确也仍需修复 ...

  8. R语言axis函数参数详解(坐标轴函数)

    首先我们来看一下函数帮助文档所给定的axis函数参数: axis(side, at = NULL, labels = TRUE, tick = TRUE, line = NA,pos = NA, ou ...

  9. c语言 函数参数传递 值传递,c语言中函数参数的三种传递方式——值传递、指针传递、引用传递...

    函数参数有三种传递方式值传递.指针传递.引用传递. 1.值传递 将已经初始化的变量值(或常量)传递到函数中. 例如: int func(int value) { int ret = value++; ...

  10. c语言loadimage函数参数,LoadImage函数与FromFile函数

    两者都是用来在程序中引入图片,在<学习心得之八------实现从磁盘读入图片文件>中,我对LoadImage函数做了解释,也有实例进行讲解,你可以看看.对于FromFile函数: publ ...

最新文章

  1. 树状dp(这个人写得好多转来慢慢看)
  2. python迷宫小游戏代码_C++课程设计迷宫小游戏
  3. Py之matplotlibseaborn :高级图可视化之​​​​​​​Q-Q分位数图probplot、​​​​​​​boxplot箱线图、stripplot分类散点图案例应用及代码实现
  4. IOS之Masonry约束的使用
  5. wgs utm java,Java,将经纬度转换为UTM
  6. bootstrap switch只出现一个对号_python:34.第一个只出现一次的字符位置
  7. 不可思议的素数(上)(文末送书)
  8. 库克:大家会爱上有史以来最出色的iPhone和Apple Watch
  9. Android studio打包遇到的问题总结
  10. Linux驱动——设备树
  11. postman自动化测试
  12. LayUI树形表格treetable使用详解
  13. kernel ramdump分析
  14. java pos58打印_POS58票据热敏打印机,怎么用ESC/POS命令控制打印
  15. 【随机森林】深入浅出讲解随机森林算法
  16. JAVA 通过Excel导出pdf_教你用Java 将Excel转为PDF
  17. 唯此间江湖年少,偏爱纵横天下。
  18. SEO基础知识:什么是网站结构,为什么重要?
  19. sql server 2008r2还原
  20. sisoftware java测试_SiSoftware Sandra测试及全文总结_内存硬盘评测-中关村在线

热门文章

  1. 代理 傲澜智伴机器人_机器人厂家_智伴机器人代理,莆田智伴机器人,傲澜智伴机器人(查看)_一呼百应网...
  2. 《Python金融大数据风控建模实战》 第15章 神经网络模型
  3. 数据分析项目分析之风控建模!!
  4. mingw32位下载以及windows下安装
  5. Sketch54 for mac汉化破解版
  6. 第 2 届河北省大学生程序设计竞赛(河北省赛)-Problem C. icebound 的账单-题解
  7. 计算机科学与技术概论,计算机科学与技术概论论文
  8. ORACLE基础之oracle锁(oracle lock mode)详解
  9. 生物特征识别:小面积指纹识别算法(二)
  10. 服务器pe系统ghost系统安装教程,U盘PE启动安装GHOST系统图文教程