标题:建立动态表的问题噻,很经典的
只看楼主
AntorDragon
Rank: 2
等 级:论坛游民
帖 子:45
专家分:12
注 册:2013-3-3
结帖率:86.67%
已结贴  问题点数:20 回复次数:3 
建立动态表的问题噻,很经典的
#include<stdio.h>
#include<stdlib.h>
#define listchushi 100
#define listxingjia 10
typedef struct sqlist
 {
     int *elem;
     int length;    //数组已经有的长度
     int holdlength;           //数组已经分配的长度
 }sqlist,*sqlistp;

void init_sqlist(sqlist L)       //构造一个空的线性表
{
   L.elem=(int*)malloc(listchushi*sizeof(int));     //只是存储空间,嗯所以算的是字节吧
   if(!L.elem)             //29
     printf("the sqlist is empty");
   L.holdlength=listchushi;
   L.length=0;
}                               //到时候把这个程序改一下,变成可动态增加的

void sqlist_disput(sqlist L)    //输出线性表的函数
{
    int n,i,*p;
    n=L.length;
    p=L.elem;
    for(i=0;i<=n;i++)
    {
        printf("%d ",*p);
        p++;
    }   
}

void main()
{  
   int i,n,*p;  
   sqlist L;         
   p=L.elem;
   printf("请输入有序顺序表的长度:\n");
   scanf("%d",&(L.length));
   n=L.length;
   printf("请依次输入表中各个元素:\n");
   for(i=0;i<n;i++)
   {
       scanf("%d",p);
       p++;
   }
  sqlist_disput(L);
}

在vc 2008环境下运行的,怎么都过不了,新手啊,老师提示scanf有错,难道不能用指针形式吗?如果错误在大神们眼中很简单,尽管喷,只求帮忙告诉一下原因,谢谢!
搜索更多相关主题的帖子: include 经典的 线性表 动态 空间 
2014-03-12 22:06
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:20 
先說scanf的問題,vs認為scanf是不安全的,可以改用 scanf_s ,或者在代碼最前 加上 #define _CRT_SECURE_NO_WARNINGS

你的 init 函數沒有掉用過,L.elem 指向未知區域

即使調用了,也是指向未知區域 ,init 函數 參數是形參,調用和沒調用效果一樣


[fly]存在即是合理[/fly]
2014-03-13 05:41
AntorDragon
Rank: 2
等 级:论坛游民
帖 子:45
专家分:12
注 册:2013-3-3
得分:0 
回复 2楼 azzbcc
你好,我把scanf 改成了scanf_s最后只有一个错误,是:
1>f:\c\excercise_daytime\excercise_daytime\excercise_daytime.c(51) : warning C4700: 使用了未初始化的局部变量“L”
这可能就是你说的那个inti函数没用的原因了,可是我还是不太懂,方便的话能讲请楚点吗?谢谢

那年京城大雪,或是天下大雪,我一骑绝尘
2014-03-13 16:47
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:0 
程序代码:
#include <stdio.h>

void f1(int x)
{
  x = 0;
}

void f2(int *x)
{
  *x = 0;
}

int main()
{
  int x = 1;
  
  f1(x);    printf("x = %d\n", x);
  f2(&x);   printf("x = %d\n", x);
  
  return 1;
}


[fly]存在即是合理[/fly]
2014-03-13 17:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-428385-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.874071 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved