• c语言函数传递数组


    1、传递数组,打印不出来

    #include <stdio.h>
    void solve()
    {        
      printf("%d",x[0]);
    }
    
    int main()
    {      
        int i;
        for(i=0;i<n;i++)
        {
            scanf("%d",&x[i]);   
            printf("%d
    ",x[i]);     
        }
        solve();  
        
        return 0;
    }

    [Error] error: `x' undeclared (first use in this function)

    或者是这个错误for each function it appears in.)

    ------------------------------------------------

    解决方案一:设置全局变量

    #include <stdio.h>
    int x[100];
    void solve()
    {        
      printf("%d",x[0]);
    }
    int main()
    {      
        int i,n;
        puts("输入数组长度");
        scanf("%d",&n);
        
        for(i=0;i<n;i++)
        {
            scanf("%d",&x[i]);   
            printf("%d
    ",x[i]);     
        }
        solve();      
        return 0;
    }

    解决方案二:用指针传递首地址

    传数组给一个函数,数组类型自动转换为指针类型,因而传的实际是地址。void func(int array[10])void func(int array[])void func(int *array)所以以上三种函数声明完全等同。
    #include <stdio.h>
    
    void solve(int *x) //前面的int也不能省。 
    {        
      printf("%d",x[1]);
    }
    int main()
    {      
        int i,n;
          puts("输入数组长度");
        scanf("%d",&n);
         int x[n];  
        
        for(i=0;i<n;i++)
        {
              printf("输入第%d个数",i+1);
            scanf("%d",&x[i]);   
            printf("%d
    ",x[i]);     
        }
        solve();    //这里的x也不能省  
        return 0;
    }
    数组给一个函数,常用的是可把数组的首地址传给函数。
    即相当于是指针的应用
    fun(int array[10][])
    fun(int array[])
    fun(int *array)

    三种调用方法
    完整版:输入的数组全部打印出来
    #include <stdio.h>
    int i,n;
    
    void solve(int *x) //前面的int也不能省。 
    {  
      for(i=0;i<n;i++)
       {
          printf("%d",x[i]);    
       }      
    
    }
    int main()
    {      
       
          puts("输入数组长度");
        scanf("%d",&n);
         int x[n];  
        
        for(i=0;i<n;i++)
        {
              printf("输入第%d个数",i+1);
            scanf("%d",&x[i]);   
            printf("%d
    ",x[i]);     
        }
        solve(x);    //这里的x也不能省  
        return 0;
    }

     另外一个例子:

    #include "stdio.h"
    //指针:数组的传递 
    void int_set(int *vc,int no,int val)
    {
        int i;
        for(i=0;i<no;i++)
        {
            vc[i]=val;        
        }
    }
    int main()
    {
        int i;
        int ary[]={1,2,3,4,5};
        int_set(ary,5,1);
        for(i=0;i<5;i++)
        printf("ary[%d]=%d
    ",i,ary[i]);
        return 0;
        
    }
        
  • 相关阅读:
    swagger在线文档配置
    SpringBoot中使用Shiro和JWT做认证和鉴权
    Java web基础
    spring boot基础
    spring MVC基础
    IDEA破解(自动重置试用期)
    Linux常用jar包启动停止脚本sh命令
    Docker Desktop 容器与镜像的保存和导入
    字符串有长度限制吗
    Thyemleaf报错: Method call: Attempted to call method *** on null context object
  • 原文地址:https://www.cnblogs.com/bluewelkin/p/4064767.html
Copyright © 2020-2023  润新知