提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言一、形如:数组名[个数]二、形如:*数组名1.引入库总结前言
C语言中,一维数组作为参数的几种传递方式
提示:以下是本篇文章正文内容,下面案例可供参考
一、形如:数组名[个数]
代码如下(示例):
#include <stdio.h>#include <stdlib.h>void print_array_size(int a[]){int n;n = sizeof(a) / sizeof(a[0]);printf("print array n = %d ", n);printf("\n");}void print_array_size1(int a[5]){int n;n = sizeof(a) / sizeof(a[0]);printf("print array2 n = %d ", n);printf("\n");}int main(void){int a[] = {5, 6, 8, 1, 5, 3, 9 };int i = 0, j = 0, n;n = sizeof(a) / sizeof(a[0]);//n=7printf("n = %d\n", n);print_array_size(a);//n=1print_array_size1(a);//n=1system("pause");return 1;}
当数组作为函数参数时时,数组形参退化为指针,其中[个数]不写或者任意大于0的数,结果都一样
二、形如:*数组名
1.引入库
代码如下(示例):
#include <stdio.h>#include <stdlib.h>void print_array_size(int *a){int n;n = sizeof(a) / sizeof(a[0]);printf("print array n = %d ", n);printf("\n");}int main(void){int a[] = {5, 6, 8, 1, 5, 3, 9 };int i = 0, j = 0, n;n = sizeof(a) / sizeof(a[0]);//n=7printf("n = %d\n", n);print_array_size(a);//n=1system("pause");return 1;}
总结
不管是数组还是指针方式作为函数的行参,实质上都是作为指针传递,为什么都要用指针呢?高效!如果是用数组传递的话,那就需要copy数组对应大小的数据,而用指针传递时,只需要copy一个指针就可以了。