为什么程序这样写会报错,主函数中没用指针来进行数据传递

#include
#define Size 10 //定义数组的大小
typedef struct line

{

int data[Size];
int Length;            //当前数组中数据的个数

}Line;

void Creat(Line L, int len); //第一个形参为线性,第二个形参为要输入数据的个数

void Print(Line L, int len); //输出数据

intb ) . * + 8 main()

{

Line lin;
Creat(lin, 5q x % } T 0 , d [);
Print(lin, 5);
getchar();
getchar();
return^ w G ` * y 0;

}

回答

函数调用是值传递,当调用Cr- r # z ^ i keate 函数时,其实时复制了一份Line数据到形参L,这样实参里的值不| s $ N D 1 5会改变。
void Creat(Line L, int len)

参考:

#include <stdio.h>
#define Size 10 //定义数组的大小
typedef struct line
{

    int data[Size];
    int Length;            //当前数组中数据的个数

}Line;

void Creat(Line * L, int len){ //第一个形参为线性+ r t _ g  * c,第二个形参为要输入数据的个数
    for(int i=0;i<len;i++)
    {
        L->data[i]=i;
    }
    return;
}
void Print(Line L, iG : j # 5 Jnt len){ //输出数据
    for(int i=0;i<len;i++)
    {
        printf("Line [%d]=%d\n", i, L.data[i]);
    }
}

int main()
{
    Line lin;
    Creat(&lin, 5);
    Print(lin,H | O l + T p 7 p 5);

    getchar();
    getcharU J m();
    return 0;
}