求助,关于键盘读取程序。
1.定义get()时,可以直接定义一个数组作为入口参数么?
2.这段程序能实现将scan()返回的键值传入数组中么?
3.如果数组不能直接引用,那该如何进行传递呢?
- void get(int a[8])
- { int i,j,a;
- do
- {
- P1=0xf0;
- a=P1;
- }while(a==0xf0)
- for(i=7;i>0;i--)
- a[i]=scan();
-
- }
数组做参数传递有两种:1、传递数组变量名,2、传递数组名(或指针变量)。
1、传递数组变量名
int main()
{
void op(int x);
int a[10];
int i=0;
for(i=0;i<10;i++)
{
op(a[i]);//传递数组变量名
...
...
}
...
}
void op(int x)
{
...
...
}
用数组变量名作函数实参传递给形参属于值传递,不会改变原数组值。
2、传递数组名(或指针变量)
数组名形式:
int main()
{
void op(int array[]); //无需对形参数组指定大小,C编译系统不检查形参数组大小
int a[10]
op(a); //传递数组名
...
...
}
void op(int array[])
{
...
...
}
指针变量形式:
int main()
{
void op(int *array); //形参定义一个指针变量接受实参数组首地址
int a[10]
op(a); //传递数组名
...
...
}
void op(int *array)
{
...
...
}
用数组名(数组名就是数组的首地址)作函数实参传递给形参属于地址传递,会改变原数组值。
受教了,感谢指导!