标签:按值 形参 int void 传递 函数参数 change1 函数
最近在看数据结构的书,刚刚入门看的有点吃力,对其中各种操作的函数参数传递参数的方式一头雾水(学c的时候感觉参数传递理解的还行),看各种博客上的算法实现传递的参数一会SqList &L,一会SqList L,一会SqList *L。但是很少博主对其作特别说明。我这种入门级选手看的十分痛苦。如是决定好好研究一下函数参数传递的方式。
c语言中函数参数传递有两种:按值传递和按地址传递。按值传递(如void change(int a,intb))时函数形参的改变不会作用于实参上面,也就是说我们在调用的函数中该变量形参的值,但是在函数外部对应得实参的值是不会改变的。而按地址传递(如void change(int *a,int *b)),我们在函数内部改变形参的值会引起实参的改变,因为此时我们传进来的地址(改地址所指向的才是我们参数的实际值),而地址该变了必然会使其指向不同的值,所以实际值也会改变。
void main(){ int m=2,n=4; void change1(int a,int b){ int temp=a; a=b; b=temp; } void change2(int *a,int *b){ int *temp; tem=a; a=b; b=temp; } change1(m,n); change2(&m,&n); }
结果十分明显,留给大家自己运行看看。另外还有一种SqList &L这又是什么呢?这是c++才有的叫按引用传递参数。他的代码写法跟change1类似,只是在change1的形参上面加上&而已,但其效果是可以改变a,b值交换的。这种写法只有c++才能c这样写是不合法的。
原文地址:https://www.cnblogs.com/wenyi1992/p/5880334.html
标签:按值,形参,int,void,传递,函数参数,change1,函数 来源: https://www.cnblogs.com/hahahakc/p/14270930.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。