C语⾔笔记——函数参数带和不带的区别
在 C 语⾔的函数中定义参数时,有时会⽤到 &,⽐如:
void InitSqList(SqList &L){// 顺序表初始化函数
for(int i =0; i < MAX_SIZE; i++)
L.data[i]=0;
L.length =0;
}
那么,定义的参数⽤ & 和不⽤ & 有什么区别?下⾯我们来⽐较⼀下。
⾸先是不带 & 的参数。
#include<stdio.h>
void test(int x){
x =1024;
printf("在函数中的 x = %d\n",x);
}
int main(){
int x =666;
printf("未经过函数的 x = %d\n",x);
test(x);
printf("经过函数的 x = %d\n",x);
}
运⾏结果为
未经过函数的 x =666
在函数中的 x =1024
经过函数的 x =666
可以看到在函数中已经对 x 进⾏了修改,但回到主函数中 x 的数值并没有发⽣变化。现在给参数添加 &。
#include<stdio.h>
void test(int&x){
x =1024;
printf("在函数中的 x = %d\n",x);
c语言和c++区别}
int main(){
int x =666;
printf("未经过函数的 x = %d\n",x);
test(x);
printf("经过函数的 x = %d\n",x);
}
运⾏结果为
未经过函数的 x =666
在函数中的 x =1024
经过函数的 x =1024
可以看到添加了 & 之后,主函数中 x 通过 test 函数修改成功了。
实际上,主函数中定义的 x 和 test 函数的参数 x 并不是同⼀个,在虚拟内存中,它们的地址是不同的。⽽ & 叫做引⽤符,它是 C++ 的内容(⽬前多数 C 语⾔编译器也能使⽤),它可以引⽤主函数中 x 的地址,这样就可以对主函数中的 x 进⾏修改。所以当 C 语⾔开发中,函数需要对原变量进⾏修改时,可以给该参数添加 &。这样函数中对参数的修改,就是对原变量的修改。
效果类似于使⽤并接收返回值。
#include<stdio.h>
int test(int&x){
x =1024;
printf("在函数中的 x = %d\n",x); return x;
}
int main(){
int x =666;
printf("未经过函数的 x = %d\n",x); x =test(x);
printf("经过函数的 x = %d\n",x); }
运⾏结果
未经过函数的 x =666
在函数中的 x =1024
经过函数的 x =1024
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论