为了账号安全,请及时绑定邮箱和手机立即绑定

c结构体指针问题

c结构体指针问题

C
冯宝宝 2017-11-04 20:17:52
#include<stdio.h>#define maxsize 30typedef 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)
查看完整描述

3 回答

?
onemoo

TA贡献883条经验 获得超454个赞

这个代码在指针的使用上应该没有错。


问题可能出在 L 的成员 length 没有初值!  块作用域内的结构体变量和其他变量一样,没有显示初始化的话,其成员的初值是不确定的。

所以 scan 函数对指针的操作没有错,但是其直接对 length 自增恐怕无法正确表示数组中有效成员的个数。

查看完整回答
反对 回复 2017-11-06
  • 冯宝宝
    冯宝宝
    喔,,,,,,,,,谢谢,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,初值为0,我加上过,好像解决了一点点
  • onemoo
    onemoo
    看到了你的另一个问题,你在其中加上了为length赋初值的语句。这个代码中你用typedef为结构体定义了新名字,用法也正确。还有什么异常吗?
?
末日泣歌

TA贡献35条经验 获得超18个赞

抱歉哈 周六晚上6点以后到周一早9点之间 都不开电脑 没看到

而且 C的简单的还可以 都还给学校了  我是学java的 所以帮不到你 抱歉哈

查看完整回答
反对 回复 2017-11-06
?
慕移动6052691

TA贡献22条经验 获得超7个赞

1、print(q); 函数没有实现

2、scan要事先声明;或者把scan函数放在main函数前

3、printf("你输入的顺序表为:\n); 括号内少了一个引号

查看完整回答
反对 回复 2017-11-06
  • 冯宝宝
    冯宝宝
    ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,嗯,细节没有写好,,,默默写java去
  • 3 回答
  • 1 关注
  • 1492 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信