提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
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=7
printf("n = %d\n", n);
print_array_size(a);//n=1
print_array_size1(a);//n=1
system("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=7
printf("n = %d\n", n);
print_array_size(a);//n=1
system("pause");
return 1;
}
总结
不管是数组还是指针方式作为函数的行参,实质上都是作为指针传递,为什么都要用指针呢?高效!如果是用数组传递的话,那就需要copy数组对应大小的数据,而用指针传递时,只需要copy一个指针就可以了。