c结构体指针问题

#include<stdio.h>

#define maxsize 30

typedef struct

{

    int num[maxsize];

    int length;

} sqlist,*sql;

int main()

{

    printf("请输入顺序表的长度:");

    int n;

    sqlist L;

    sql p,q;

printf("你输入的顺序表为:\n);

    scanf("%d",&n);

    p=&L;

    q=scan(p,n);


    print(q);

}

 sql scan(sql L,int n)

{

    int i;

    for(i=0; i<n; i++)

    {

        L->length++;

        scanf("%d",&L->num[i]);

      

    }

return L;

}

我想把这个结构体指针返回,可是报错不知道为什么,函数写得不对么,是要申请内存么(0-0)

冯宝宝
浏览 1493回答 3
3回答

onemoo

这个代码在指针的使用上应该没有错。问题可能出在 L 的成员 length 没有初值!  块作用域内的结构体变量和其他变量一样,没有显示初始化的话,其成员的初值是不确定的。所以 scan 函数对指针的操作没有错,但是其直接对 length 自增恐怕无法正确表示数组中有效成员的个数。

末日泣歌

抱歉哈 周六晚上6点以后到周一早9点之间 都不开电脑 没看到而且 C的简单的还可以 都还给学校了  我是学java的 所以帮不到你 抱歉哈

慕移动6052691

1、print(q); 函数没有实现2、scan要事先声明;或者把scan函数放在main函数前3、printf("你输入的顺序表为:\n); 括号内少了一个引号
打开App,查看更多内容
随时随地看视频慕课网APP