在C语言中,并没有引用的概念,这个是C++的概念。
公司主营业务:网站制作、成都网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出肥西免费做网站回馈大家。
在C++的函数参数中,有两种形式,其中
TYPE var的形式,称为传引用方式;
TYPE var的形式,称为传值。
二者的区别为,当传引用时,实际传到函数中的形参,是实际参数的一个引用,而不是仅传递值到函数中。具体的表现有以下几条:
1 传引用时,形参和实参是同一个变量,即使用相同的内存空间,二者有相同的地址。而传值时二者地址不同;
2 传引用时,由于没有新建变量,所以对于类对象参数,不会产生构造和析构。而如果是传值调用,调用时会进行构造,退出函数时会进行析构;
3 由于传引用使用的是原本实参的地址,所以对引用参数值的修改,会在退出函数后体现在主调函数中,而传值调用对参数的修改不会影响到主调函数。
一:值传递,只是把一个变量的值复制到调用函数中去。
二:引用传递,把变量的地址(即指针)传到调用的函数去,调用的函数对变量的地址进行的操作 会改变参数的值。
p函数就是个冒泡递减排序功能。标准函数头写法应该是void p(int a[])而不是void p(int a[5]),即使写成void p(int a[5]),编译器也是按void p(int a[])解释而不按void p(int a[5])解释,而且这里a[]的意思就是定义a是int *型指针。函数p中并没有改变a,改变的是a指向的目标a[0]~a[4]。所以不知你问的具体是啥意思……
有一个经典的例子:
传值
void swap1(int a, int b){
int t = a;
a = b;
b = t;
}
调用完函数之后a和b的值不变,因为函数内的a和b只是形参,只是值和传入的ab相同而已,内存地址不一样。
传引用
void swap2(int a, int b){
int t = a;
a = b;
b = t;
}
调用完函数a和b的值改变,因为传的是引用,函数中变量的内存地址和传入的ab内存地址是一样的。
首先,函数参数是一个逗号表达式,那么可以说明他是一个整体表达式,
我们知道后缀++是表达式完了才改变i的值,所以传参数的时候,i的值并没有变化,
比如如果原来i=5,那么在函数里面,两个参数的值都是5,但是函数调用完后,i的值就编程了7,但是在函数里面两个参数因为是传值方式,跟i没有关系所以还是5.
有程序为证:
#include stdio.h
void f(int a,int b)
{
printf("a=%d,b=%d\n",a,b);
}
void main()
{
int i=5;
f(i++,i++);
printf("i=%d\n",i);
}
#includestdio.h
int func() {
return 10000;//这个函数返回了一个数字
}
void func1(int num) { printf("%d", num); }//这个函数接受一个数字并输出
int main()
{
func1(func());//func1接受func返回的数字并输出
return 0;
}