首页 > 代码库 > c语言函数传递数组

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)

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

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

#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;}

 

c语言函数传递数组