c语言函数参数能用结构体变量当参数吗?解决思路

c语言函数参数能用结构体变量当参数吗?
我的意思是能这样写吗?
C/C++ code

typedef struct

{
    ElemType * elem;
    int length;
    int listsize;
}SqList;

Status InitList_Sq(SqList L)
{         
             //................
}
Status InitList_Sq(SqList *L)
{
            //..............
}


如果能的话那么写函数时一般用上面的写法还是下面的写法呢?比如我要调用elem成员
上面的写法是L.elem 下面的写法是*(L).elem 这两种写法有什么区别呢?

------解决方案--------------------
前面一个貌似就是声明一个结构体,并拷贝传入的结构体给这个声明的结构体,就和用局部变量一样,只不过初始值和传入的结构体一样罢了。
后面一个是指向结构体的指针,你对这个结构体做的修改,会影响到传入的结构体的内容,也就是上一级函数中的内容。


如果你只是需要结构体成员的值的话,就用前面的,如果你需要对这个结构体进行修改的话,就用后面一个。

就这么多了。
------解决方案--------------------
探讨
前面一个貌似就是声明一个结构体,并拷贝传入的结构体给这个声明的结构体,就和用局部变量一样,只不过初始值和传入的结构体一样罢了。
后面一个是指向结构体的指针,你对这个结构体做的修改,会影响到传入的结构体的内容,也就是上一级函数中的内容。


如果你只是需要结构体成员的值的话,就用前面的,如果你需要对这个结构体进行修改的话,就用后面一个。

就这么多了。