十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
当传递的数,不止一个的时候,或者要改变参数值得时候返回实参的值得时候。就用传递地址。
成都创新互联公司2013年至今,是专业互联网技术服务公司,拥有项目成都网站建设、成都网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元平度做网站,已为上家服务,为平度各地企业和个人服务,联系电话:18980820575
例如:
getct(int
*a,int
*b)
{
printf("%d
%d",*a,*b);
}
mian()
{
int
x=5,y=3;
int
*s,*z;
s=x;z=y;
getct(s,z);
}
#include stdio.h
void swap(int*,int*);
void main()
{
int x=30,y=20;
printf("(1)x=%d y=%d\n",x,y);
swap(x,y);
printf("(4)x=%d y=%d\n",x,y);
}
void swap(int*a,int*b)
{
int t;
printf("(2)a=%d b=%d\n",*a,*b);
t=*a;*a=*b;*b=t;
printf("(3)a=%d b=%d\n",*a,*b);
}
int add(struct stu g)
标准c是不支持这种传引用的语法的。。想做到类似效果只能函数里用 *g,调用时候用 value 之类的
k=stu.i+stu.j; 这里stu应该是g
先举个简单例子:
#include iostream
using namespace std;
void Add1(int *a)
{
(*a)++;
}
void Add2(int a)
{
a++;
}
int main()
{
int x=1,y=5;
Add1(x);
Add2(y);
coutx" "yendl;
return 0;
}
输出:
2 5
这两个自加函数中,Add1是指针传递,Add2是数值传递,
在调用Add2(y)时,系统是先建造一个int型变量a,再将y的值传给a(此时y和a是两个不同地址的变量,只是两者值相同),然后a++,却对y没有任何操作,故在函数调用结束后,释放a,而y没任何变化;
在调用Add1(x)时,系统先建造int型指针a,然后将实参x的地址传给了指针a,故此时a与x是指向同一地址,即共享统一数据,当对地址a内的数据进行操作,就是对x进行操作。a++时自然也对x++,当函数调用结束,指针a释放掉,x的值此时已经发生了变化。
这就是两者不同,地址传递的参数都是指针类型,于数值传递不一样。
至于选择那种传递,就要看这个程序的具体目的和功能了,一般要对参数进行修改的要用地址传递,而只是调用参数的数据进行其他计算并不需要修改数据本身宜用数值传递。
还有什么不明白吗