关于C语言结构体指针做函数形参的问题

#include<stdio.h>#include<string.h>#defineN10typedefstructss{charnum[10];ints;}STU;vo... #include<stdio.h> #include<string.h> #define N 10 typedef struct ss { char num[10]; int s; }STU; void fun(STU a[],STU *s) { int t,p=0; t=a[0].s; for(int i=1;i<N;i++) { if(t>a[i].s) { t=a[i].s; p=i; } } *s=a[p]; } void main() { STU a[N]={ {"A01",81},{"A02",81},{"A03",81},{"A04",81},{"A05",81}, {"A06",81},{"A07",81},{"A08",61},{"A09",81},{"A010",81} },m; printf("the original data is :\n"); for(int i=0;i<N;i++) { printf("NO=%s MARK=%d\n",a[i].num,a[i].s); } fun(a,&m); printf("the lowest is %s who's score is %d\n",m.num,m.s); } 把fun函数里的最后一行代码*s=a[p];改成s=&a[p];就不行了,感觉差不多,不知道问题出在哪,求教~~~ 展开
 我来答
市风詹飞雪
2020-09-28 · TA获得超过1056个赞
知道答主
回答量:5
采纳率:0%
帮助的人:1103
展开全部
fun函数的第二个参数之所以用指针,就是为了能把函数里面对这个参数做的改动保存下来
而你如果把*s=a[p];改成s=&a[p];效果相当于,改了s的值,使其不再指向参数(函数
外部变量
m)的地址,虽然*s的值是正确的,但实际m的值则没有改变,所以在外面输出的时候,结果和预期不一致了
s=&a[p];这个操作本身没有问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
柠酸Zq
2020-02-28 · TA获得超过1242个赞
知道小有建树答主
回答量:1936
采纳率:100%
帮助的人:9.2万
展开全部
a[p]是个数组,在计算机里面存储的就是他的地址,用&再在他地址的基础上在取地址明显是会报错的。
在c语言里面数组都是存的首地址,所以数组和指针有的时候是可以互换的,&是取地址符号,数组里面本就已经是地址了在用&肯定回有问题的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式