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\n",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\n",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\n",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\n",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\n",i,ary[i]);
    return 0;
    
}
    

 

posted @ 2014-10-31 12:51  kin2321  阅读(10240)  评论(0编辑  收藏  举报