c++数据结构指针引用问题

指针引用传递的是什么呀

#include<stdio.h>

#include<iostream>

#include<malloc.h>

#define Maxsize 50
typedef char EleType;
typedef struct
{
    int length;
    EleType data[Maxsize];
}Sqlist;
extern void InitList(Sqlist *&L);
extern void ListInsert(Sqlist *&L);
extern int ListEmpty(Sqlist *L);
extern void display(Sqlist *&L);
void main()
{
    Sqlist *L;
              InitList(L);
    ListInsert(L);
              printf("%c",L->data[0]);
              system("pause");
}
#include <stdio.h>

#include <malloc.h>
#define Maxsize 50
typedef char EleType;
typedef struct 
{
    EleType data[Maxsize];
       int length;
} Sqlist;
 void InitList(Sqlist *&L)
{
    L=(Sqlist *)malloc(sizeof(Sqlist));
    L->length=0;
}
void ListInsert(Sqlist *&L)
{
    int j,i;
    EleType e;
    printf("请选择要插入的位置和数据:");
    scanf("%d %c",&i,&e);
    if(i<1 || i>L->length+1)
    {
        return;
    }
    i--;
    for(j=L->length;j>i;j--)
    {
        L->data[j]=L->data[j-1];
    }
    L->data[i]=e;
    L->length++;

}
int ListEmpty(Sqlist *L)
{
    if(L->length==0)
        return 0;
    else
        return 1;
}
void display(Sqlist *&L)

{

    int i;
    if(ListEmpty(L)==0)
        return;
    else
        for(i=0;i<L->length;i++)
        {
            printf("第%d个元素为%c\n",i+1,L->data[i]);
        }
}

运行这段程序,为什么在访问通过引用初始化插入数据后的实参,访问不到数据

img


而调用自定义的函数display,display(L)替换printf("%c",L->data[0]); 就能访问到

img


不是通过引用操作能和外面同步吗,为什么访问不到,谁能解释下

指针引用就是让调用者和被调用者共享同一个变量,因此你函数里initlist让L指向一个地址,那么主程序也能跟着改变
你下面的display其实并不修改指针,所以用不到引用。

开始是把函数的定义与函数的声明放在了不同的文件,函数的声明与main函数放到了一个文件。后来发现把它们放在同一个文件就能访问了,不知道原因谁能解释一下

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^