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