m0_73740280 2023-02-20 20:58 采纳率: 86.8%
浏览 13
已结题

请问这个函数调用为什么不执行

请问这个代码为什么不执行Output()及其之后的函数呢?

#include<stdio.h>
int Input(int* a,int n){
    printf("请输入数组元素个数:");
    scanf("%d",&n);
     printf("请输入数组元素:");
    for(int i=0;i<n;i++){
    scanf("%d",&a[i]);
    }
    return n;
}
void Output(int* a,int n){
    printf("这个数组是:");
    for(int i=0;i<n;i++)
    printf("%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);
}

  • 写回答

3条回答 默认 最新

  • 答主 2023-02-20 21:22
    关注
    • 这个代码不执行 Output() 以及其之后的函数,是因为在函数 Input() 中并没有为指针 a 分配内存空间,导致在调用其他函数时会发生未知错误。
    • 为了解决这个问题,需要在 main() 函数中为指针 a 分配足够的内存空间,可以使用动态内存分配函数 malloc() 来实现。例如,可以在 main() 函数中添加以下代码:
    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;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月13日
  • 已采纳回答 3月5日
  • 创建了问题 2月20日

悬赏问题

  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd
  • ¥50 C# 使用DEVMOD设置打印机首选项
  • ¥15 麒麟V10 arm安装gdal
  • ¥20 OPENVPN连接问题
  • ¥15 flask实现搜索框访问数据库