C语言关于函数调用指针的一个问题

C语言关于函数调用指针的一个问题,看最后两个函数,我一开始在getLen()函数中调用了&L,导致输出的元素数量永远是0,后来问了chatGPT,他说的我似懂非懂,可以通俗的解释一下吗

img

typedef int ElemType;
typedef struct
{
    ElemType* data;
    int listSize,lenth;
}SqList;

int getLen(SqList *L)
{
    return (L->lenth);
}
void listList(SqList* L)
{
    printf("当前顺序表共有%d个元素,分别为:\n",getLen(L));
    for (int i = 0; i < L->lenth; i++)
        printf("%d ",L->data[i]);
    printf("\n");
    return 1;
}

完整代码看一下,你void的函数,怎么return 1;
main函数呢,怎么没法输出

这么写,供参考:

#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct
{
    ElemType* data;
    int listSize, lenth;
}SqList;

int getLen(SqList* L)
{
    return (L->lenth);
}
void listList(SqList* L)
{
    printf("当前顺序表共有%d个元素,分别为:\n", getLen(L));
    for (int i = 0; i < L->lenth; i++)
        printf("%d ", L->data[i]);
    printf("\n");
    return;       //return 1;   
}
int main()
{
    SqList L, * LL;    //定义两个变量
    
    // 以下是对变量 L 的操作
    L.data = (ElemType*)malloc(sizeof(ElemType) * 10);//表变量 L 的初始化
    L.lenth = 0;
    L.listSize = 10;

    for (int i = 0; i < 5; i++)   // 往表 L 里填写 5 个数据
        L.data[L.lenth++] = i + 1;
    listList(&L);                 // 输出表 L

    // 以下是对指针变量 LL 的操作
    LL = (SqList*)malloc(sizeof(SqList));            //表指针变量 LL 的初始化     
    LL->data = (ElemType*)malloc(sizeof(ElemType) * 10);
    LL->lenth = 0;
    LL->listSize = 10;

    for (int i = 0; i < 8; i++)  // 往表 LL 里填写 8 个数据
        LL->data[LL->lenth++] = i + 1;
    listList(LL);

    return 0;

}