嵌入式c语言参数列表分类

📅 2026/8/27 9:11:00
嵌入式c语言参数列表分类
我前面文章提到c语言根据返回值分类分成三种(链接嵌入式编程:详解c语言函数编写的三种并列风格。-CSDN博客)今天这篇文章将对函数参数列表根据其输入输出型特性进行分类首先我们要明白输入输出的概念输入输出指的宾语是函数体输入函数体或者输出函数体主要是具体的数据。输入指的是数据流到函数体内部中输出指的是输出从函数体流出到函数外部。1、纯输入型参数所谓输入型参数也就是参数列表中的参数接收外部流来的数据向函数体传递数据函数体内代码只会对参数进行利用这些数据对参数进行只读操作而不会对参数变量或者参数指针变量指向变量进行写操作从而导出数据的流出。例如int add(int a, int b); size_t get_strlen(const char *str); uint32_t cal_ave(const int *arr, int len);如上所示输入型参数如果是指针变量往往使用const进行修饰表明参数指针变量指向的变量是只读属性的而不会在函数体内进行写操作进行修改。而普通参数在函数被调用进行传参的时候就默认进行了一次单向的输入赋值操作而无法影响函数外面的变量的值。2、纯输出型参数。输出型参数主要是针对指针变量普通变量只能是纯输入型参数函数体内代码会对指针变量执行的函数体外面真正变量进行写操作从而修改函数外部变量的值。例如void init_timer(struct *timerx); uint8_t str_input(char *str, int len);3、输入输出分离型参数函数参数至少由一个纯输入型参数和一个纯输出型参数组成的输入型参数和输出型参数为两个独立的参数。输入输出分离性参数主要针对的也是指针类型的。void u16_buffer_get(const uint8_t buff, uint8_t buff_len, uint16_t *u16_array, uint8_t u16_len); void str_get(const char *str, uint8_t *buff, uint8_t len);上述参数buff指向的缓存区为只读的数据流向函数体为输入型参数u16_array指向的数组为只写的数据流出函数体因此为输出型参数。两种参数为独立的各不相关的变量以及各自指向的真正变量都是独立不相关的变量因此这种类型为输入输出分离型参数。4、输入输出复合型参数这类参数列表也就是函数参数中的参数某个指针变量既参与读操作也参与写操作数据既流入函数体又流出函数体例如void array_sort(uint8_t *array, uint8_t len); void uppercase_str(char *str);总结这4类参数类型从本质上讲是根据数据流向函数体的方向来分类的流入函数体的叫输入型参数流出函数体的叫输出型参数。普通参数在函数调用时进行一次赋值操作是单向流向函数体的指针类型的参数和普通参数是一样的但是它指向的函数体外面的真正变量根据操纵数据的方式读还是写流入函数体还是流出函数体可以分为输入型参数和输出型参数。