微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求助,关于键盘读取程序。

求助,关于键盘读取程序。

时间:10-02 整理:3721RD 点击:
想做一个将键盘上扫描的键值传送到数组中的程序,但是c语言基础太差,想来想去不知道对不对,求助!问题如下:
1.定义get()时,可以直接定义一个数组作为入口参数么?
2.这段程序能实现将scan()返回的键值传入数组中么?
3.如果数组不能直接引用,那该如何进行传递呢?

  1. void get(int a[8])
  2. {  int i,j,a;
  3.    do
  4.    {   
  5.      P1=0xf0;
  6.      a=P1;
  7.     }while(a==0xf0)
  8.     for(i=7;i>0;i--)
  9.       a[i]=scan();
  10.    

  11. }

复制代码


数组做参数传递有两种: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)
{
        ...
        ...
}
用数组名(数组名就是数组的首地址)作函数实参传递给形参属于地址传递,会改变原数组值。

受教了,感谢指导!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top