请问这个代码为什么不执行Output()及其之后的函数呢?
#include
int Input(int* a,int n){
printf("请输入数组元素个数:");
scanf("%d",&n);
printf("请输入数组元素:");
for(int i=0;i"%d",&a[i]);
}
return n;
}
void Output(int* a,int n){
printf("这个数组是:");
for(int i=0;i"%d",a[i]);
}
int Add(int* a,int n){
int i,k,j;
printf("请输入要插入的位置:");
scanf("%d",&i);
for(i;j>i;j++)
a[j+1]=a[j];
printf("请输入要插入的元素:");
scanf("%d",&k);
k=a[i];
return n+1;
}
int Delete(int* a,int n){
int i,j,k;
printf("请输入要删除的位置:");
scanf("%d",&i);
for(i;j>i;j++)
a[j-1]=a[j];
return n-1;
}
void Find(int* a){
int i;
printf("请输入要查找第几个元素:");
scanf("%d",&i);
printf("%d",a[i+1]);
}
int main(){
int* a;
int n=Input(a,n);
Output(a,n);
Add(a,n);
Delete(a,n);
Find(a);
}
int main(){
int n;
printf("请输入数组元素个数:");
scanf("%d", &n);
int* a = (int*) malloc(n * sizeof(int)); // 分配内存空间
n = Input(a, n);
Output(a, n);
Add(a, n);
Delete(a, n);
Find(a);
free(a); // 释放内存空间
return 0;
}
那是Input函数就出问题崩溃了。因为你定义了指针a,可没有给它分配空间,input函数就向指针空间写入值了。指针都不知道指向哪呢
main中给a分配空间。
要么写成:
int aa[100];
int * a = aa;
或者
int *a = (int*)malloc(100*sizeof(int));