|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
[#define Size 100
#include<stdio.h>
#include<stdlib.h>
struct List {
int Maxsize[Size];//线性表所能保存的最多数据
int length;//表示 线性表实际保存的数的数量
};
int Getnum(struct List a,int i,int *num)//搜索某个位置的值 ,a为传入的链表,i为查找的第几个位置的数,num保存查找到的数
{
if(i<1||i>a.length)//判断这个位置是否在表中
{
return 0;
}
*num=a.Maxsize[i-1];//赋值
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[i] );
}
int * p;
Getnum(a,6,p);//查找了第六个位置的值
return 0;
}
出现了这个错误,因为我让他查找第六个位置,所以我输入七个数他就会出错,如果只输入小于6的就不会有问题,说明是那个查找的函数有问题,我试了下发现是*num=a.Maxsize[i-1];//赋值
这句有问题,我把这个屏蔽了他就不会出错,但我不知道这句有什么问题
1. a在哪里定义的?main里边不认识哈;
2. scanf("%d", &a.MaxSize); 修改为 scanf("%d", &a.MaxSize[i]); 否则你总是给第一个数(a.MaxSize[0])赋值;
3. int *p; 这个直接使用,称为野指针胡作非为!可以使用如下方式,也可以其他方式,自己测试:
int p = 0; // 变量最好赋初始值,防备你有时候头脑一热直接使用导致意想不到的结果
Getnum(a, 6, &p);
附:如你所说"当输入小于6时就可以",那是因为你Getnum第一句就不让他过啊-_-
|
|