c语言中参数的传递方式是,C语言函数的参数及传递方式

1.形式参数和实际参数

1.1形式参数

形参出现在被调函数当中,在整个函数体内都可以使用。形参在定义时编译系统并不分配存储空间,只有在调用该函数时才分配内存单元。调用结束内存单元被释放,故形参只有在函数调用时有效,调用结束时不能再使用。

1.2实际参数

实参出现在主调函数当中,当函数调用时,朱调函数把实参的值传送给被调函数的形参,从而实现函数间的数据传递。传递方式有两种:值传递和地址传递方式。

2.变量作为函数参数

当形参定义为变量时,实参可以是常量、变量和表达式,这种函数间的参数传递为值传递方式。值传递的特点是参数的“单向传递”;

int swap(int a,int b)

{

int temp;

temp=a;

a=b;

b=temp;

return 0;

}

int main (void){

int a=3,b=4;

swap(a,b);

}由于是值传递,单向传递,并不会改变a,b的值。

3.数组作为函数参数

3.1数组元素作为函数参数

数组元素又称为下标变量,它具有普通变量的一切性质,因此数组元素作为函数的实参进行数据传递是与普通变量没有任何区别,也是值传递

int swap(int a,int b)

{

int temp;

temp=a;

a=b;

b=temp;

return 0;

}

int main (void){

int a[]={3,4};

swap(a[0],b[0]);

}

同样是值传递并不会改变a[0]的值。

3.2一维数组名作为函数参数

数组名是一个地址,是数组的首地址,因此用数组名作为函数的参数进行数据传递时,执行的是地址传递方式。所谓地址传递,顾名思义实参传递的不是数据本身,而是数据存在的地址。函数调用时,把数组名即数组的首地址作为实参传递给形参(必须是可接受地址的数组名或者指针变量),形参数组名取得首地址后就有了实在的数组,这时实质上实参和形参是同一个数组,指向同一段存储空间,实参的改变就是对形参的改变,所以传址方式可看成是数据进行了“双向传递”。

3.3数组指针,即数组元素的地址作为函数参数

由于数组元素的地址的本质仍然为地址,所以属于地址传递方式。

int swap(int *a,int *b)

{

int temp;

temp=*a;

*a=*b;

*b=temp;

return 0;

}

int main (void){

int arr[] = {1,2};

int *a = &arr[0];

int *b = &arr[1];

swap(a,b);

}

重点:

数组元素(下标变量)作为函数的参数进行的数据传递是值传递方式,数组名(数组首地址)、数组元素的地址(&arr[0])作为函数参数进行的数据传递是地址传递方式。

实参为数组名是,形参接收时可以有三种形式:带下标的数组名(arr[0])。不带下标的数组名(arr)、可接收地址值的指针变量名(*a)。由于是参数组和形参数组都指向同一段内存单元,故它们操作的是同一批数据,所以形参的改变就是改变了实参中的数据。

原文:http://blog.csdn.net/qq_30351805/article/details/51344316

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561870.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web前端期末大作业--响应式性感美女模特博客网页设计(HTML+CSS+JavaScript)实现

临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从下手?网页要求的总数量太多?没有合适的模板?等等一系列问题。你想要解决的问题,在专栏👇🏻👇&…

web前端大作业--响应式风景旅游网页设计(国庆旅游主题-HTML+CSS+JavaScript)实现

临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从下手?网页要求的总数量太多?没有合适的模板?等等一系列问题。你想要解决的问题,在专栏👇🏻👇&…

c语言抓取抖音视频,【FiddlerScript】利用Fiddler中的FiddlerScript自动抓取抖音无水印视频并且自动保存...

本帖最后由 小白大侠 于 2021-3-14 13:55 编辑Fiddler自动抓取抖音无水印视频并且自动保存前言:这段代码实用性不大,大量数据处理容易造成Fiddler卡死,只是希望给未来写FiddlerScript脚本的人一点启发,毕竟有些代码的写法百度不到准备工具:Xp…

Web前端期末大作业--响应式风景旅游网页设计(国庆旅游主题-HTML+CSS+JavaScript)实现(二)

临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从下手?网页要求的总数量太多?没有合适的模板?等等一系列问题。你想要解决的问题,在专栏👇🏻👇&…

c++语言 tcp例子,C++中TCP通信实现文件传输

作为Computer networks课程的一个project,我们需要实现用TCP在mininet中client和server的相互通信,需要能够传输文本文件,binary file 和image file。整个project的目的还是比较明确的。我主要列出了一下几个问题,需要在代码中实现…

H5+echarts模拟全国程序员可视化大数据【附完整源码】

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末免费获取源码🍅 临近学期结束&#xff…

android创建构建方法,Android 应用程序构建实战+原理精讲

转载来自51cto:https://blog.51cto.com/15091291/2629464new Vue({el: #app,data () {return {info: null}},mounted () {axios.get(https://www.runoob.com/try/ajax/json_demo.json).then(response > (this.info response)).catch(function (error) { // 请求失败处理con…

Java期末大作业基础项目--在线学生选课系统

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 临近学期结束&#xff…

Web前端期末大作业--响应式网络科技公司网页设计(IT网络主题-HTML+CSS+JavaScript)实现

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、【java奥斯卡】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &…

android mp4语音识别,怎样用语音识别将一段视频转化为文字, 比如:百度的语音识别api...

import java.util.ArrayList;import com.iflytek.speech.RecognizerListener;import com.iflytek.speech.RecognizerResult;import com.iflytek.speech.SpeechError;import com.iflytek.speech.SpeechRecognizer;public classTestXF {/**** 这里需要改成你自己的实际appid*/pri…

Web前端期末大作业--响应式电竞博客网页设计(HTML+CSS+JavaScript)实现

临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从下手?网页要求的总数量太多?没有合适的模板?等等一系列问题。你想要解决的问题,在专栏👇🏻👇&…

android 对话框 重复,如何在Android上重复使用AlertDialog for Yes / No?

我正在尝试找到重用显示自定义标题的Dialog的方法,然后将Yes / No click发送到已启动Dialog的功能.我有两个按钮,保存和解除,并且都调用是/否对话,一个显示“你想保存”,另一个显示“关闭更改?”.我认为我的程序非常“脏”但我想它可以工作,但我的问题是“查看视图”…

web前端期末大作业--响应式汽车租赁网页设计--(HTML+CSS+JavaScript)实现

临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?网页要求的总数量太多?HTML网页作业无从下手?没有合适的模板?等等一系列问题。你想要解决的问题,在专栏👇🏻👇&…

android启动页面显示空白,android – 启动时的空白页面

在获取启动画面之前,当我启动应用程序时,我会得到一个空白页面(< 1s).我甚至试过几乎空的泼水活动,但我仍然得到它&#xff01; 怎么了&#xff1f; 清单文件package"com.mypackage"android:versionCode"1"android:versionName"1.0" >andr…

Web前端期末大作业--响应式个人日志博客网页设计(HTML+CSS+JavaScript)实现

临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大&#xff1f;网页要求的总数量太多&#xff1f;HTML网页作业无从下手&#xff1f;没有合适的模板&#xff1f;等等一系列问题。你想要解决的问题&#xff0c;在专栏&#x1f447;&#x1f3fb;&#x1f447;&…

HTML+CSS+JS实现canvas仿ps橡皮擦刮卡效果

效果演示&#xff1a; 文末获取源码 主要JS代码实现 <div class"box" id"bb"><canvas id"cas" width"1366" height"651"></canvas></div><script type"text/javascript" charset&quo…

android寻找手机,寻找那些“干净”的Android手机

非原生Android系统、预装的各种第三方APP&#xff0c;都是拖慢手机运行效率和速度的“罪魁祸首”。那么&#xff0c;现在还有没有“干净”Android手机值得我们选择呢&#xff1f;为了体现“差异化”&#xff0c;绝大多数手机厂商都有自己的“OS”&#xff0c;比如MIUI、Sense等…

人人开源 VUE项目报错./src/assets/scss/index.scssModule build failed: Error: ENOENT: no such file or direct

Module build failed: Error: ENOENT: no such file or directory, scandir ‘C:\Users\administrator\Desktop\renren-fast-vue\node_modules\node-sass\vendor’ at Object.fs.readdirSync (fs.js:861:3) at Object.getInstalledBinaries (C:\Users\xyy’s\Desktop\renren-fa…

android 控件 margin,Android MarginDesign控件TabLayout导航栏使用详解

TabLayout的使用简单介绍比如在平常的项目中实现这样的效果&#xff0c;一般都是都会使用viewPageIndicate等几个开源框架直接实现&#xff0c;或者使用自定义的HorizontalScroll再配合ViewPageFragment实现。在谷歌推出marginDesign之后&#xff0c;实现这种效果可以直接使用T…