塌鼻子巴巴鲁 2017-05-13 07:42 采纳率: 45.5%
浏览 1944
已采纳

关于结构体数组变量作参数的问题

书上说数组都是以传地址的方式进行参数传递的。为什么A,B的输出不同?结构体数组变量s[1]
作为参数和结构体变量成员s作参传递的都是数组,为什么输出不同?
A:#include
#include
typedef struct {char name[10];} STU;
void fun(char name[10])
{
strcpy(name,"sun");
}
int main()
{
STU s={"qian"};
fun(s.name);
printf("%s",s.name);
}
output:sun

B:
#include
#include
typedef struct {char name[10];} STU;
void fun(STU t)
{
strcpy(t.name,"sun");
}
int main()
{
STU s[2]={"qian","zhao"};
fun(s[1]);
printf("%s",s[1].name);
}
output:zhao

  • 写回答

5条回答 默认 最新

  • 战在春秋 2017-05-13 08:50
    关注

    这里有一个误解

     fun(s[1]);
    
     并不是传递数组,而是传递了一个结构体变量  (这个变量是结构体数组s的第二个元素)
    

    所以

      fun(s[1]);
    

    仍然属于传值方式,将参数的一个拷贝传给函数,函数的执行并不影响原来的变量值。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看