从品牌网站建设到网络营销策划,从策略到执行的一站式服务
int add(struct stu g)
专注于为中小企业提供成都网站制作、成都网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业庐山免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
标准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的值此时已经发生了变化。
这就是两者不同,地址传递的参数都是指针类型,于数值传递不一样。
至于选择那种传递,就要看这个程序的具体目的和功能了,一般要对参数进行修改的要用地址传递,而只是调用参数的数据进行其他计算并不需要修改数据本身宜用数值传递。
还有什么不明白吗
指针就是地址,那也就是指针变量作为函数参数的传递喽 。
例:对输人的两个整数按大小输出。
#includestdio.h
void main()
{
void swap(int *p1,int *p2);
int a,b.
int *pointer1,*pointer2;
scanf("%d,%d",a,b);
pointer1=a; pointer2=b;
if(ab)
swap(pointer1,pointer2);
printf("\n%d,%d\n",a,b);
}
void swap(int *p1,int *p2)
{int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
#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);
}
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图