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; }
时间: 2024-10-11 13:45:08