C语言 线性表问题
[#define Size 100#include<stdio.h>
#include<stdlib.h>
struct List {
intMaxsize;//线性表所能保存的最多数据
intlength;//表示 线性表实际保存的数的数量
};
int Getnum(struct List a,int i,int *num)//搜索某个位置的值 ,a为传入的链表,i为查找的第几个位置的数,num保存查找到的数
{
if(i<1||i>a.length)//判断这个位置是否在表中
{
return 0;
}
*num=a.Maxsize;//赋值
printf("%d",*num);
return 0;
}
int main( ){
printf("请输入你要保存的数据数量(最大为100)");
scanf("%d",&a.length);
printf("请输入你要保存的数据");
for(int i=0;i<a.length;i++)
{
scanf("%d",&a.Maxsize );
}
int * p;
Getnum(a,6,p);//查找了第六个位置的值
return 0;
}
出现了这个错误,因为我让他查找第六个位置,所以我输入七个数他就会出错,如果只输入小于6的就不会有问题,说明是那个查找的函数有问题,我试了下发现是*num=a.Maxsize;//赋值
这句有问题,我把这个屏蔽了他就不会出错,但我不知道这句有什么问题 1. a在哪里定义的?main里边不认识哈;
2. scanf("%d", &a.MaxSize); 修改为 scanf("%d", &a.MaxSize); 否则你总是给第一个数(a.MaxSize)赋值;
3. int *p; 这个直接使用,称为野指针胡作非为!可以使用如下方式,也可以其他方式,自己测试:
int p = 0; // 变量最好赋初始值,防备你有时候头脑一热直接使用导致意想不到的结果
Getnum(a, 6, &p);
附:如你所说"当输入小于6时就可以",那是因为你Getnum第一句就不让他过啊-_- n0noper 发表于 2016-3-12 08:21
1. a在哪里定义的?main里边不认识哈;
2. scanf("%d", &a.MaxSize); 修改为 scanf("%d", &a.MaxSize); 否 ...
谢谢谢谢,第一和第二点是复制的时候没复制好,我有做的,问题是第三点,那个野指针的问题,我改成int p=0Getnum( a,6,&p) 就可以了,谢谢
页:
[1]