塌鼻子巴巴鲁 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条)

报告相同问题?