C: 数组形参

简介: 知识这个东西,真是知道的越多就不知道的越多,C/C++这塘水得多深啊,哈哈。看下面3个片段: 1 void fun(char a[100]) { 2         fprintf(stderr, "%s\n", a); 3 } ...

知识这个东西,真是知道的越多就不知道的越多,C/C++这塘水得多深啊,哈哈。
看下面3个片段:
<一>

1 void fun(char a[100]) {
2         fprintf(stderr, "%s\n", a);
3 }
4  
5 int main(void) {
6         char aa[200] = "abcdef";
7         fun(aa);
8 }

<二>

1 void fun(char a[]) {
2         fprintf(stderr, "%s\n", a);
3 }
4  
5 int main(void) {
6         char aa[200] = "abcdef";
7         fun(aa);
8 }

<三>

1 void fun(char* a) {
2         fprintf(stderr, "%s\n", a);
3 }
4  
5 int main(void) {
6         char aa[200] = "abcdef";
7         fun(aa);
8 }

以上三个片段的输出其实是一样的:

abcdef
  • fun(char a[100]):实际上这里数组长度100会被编译器忽略,唯一可能起的作用是提示调用者这里应该传入一个长度为100的数组,但这种提示也是毫无约束性的。
  • fun(char a[]):这里a[]的作用是可以提示调用者这里处理的是一个数组而并不是char*,但是编译器还是会将a当作一个char*来处理,也就是说如果你在fun()函数中测试sizeof(a)的话,你得到的是一个指针的长度(在32位机器上一般是4)。
  • fun(char *a):这种形式应该是普通青年最常用的方式了吧……^_^,一般还会加一个数组长度参数len 。
目录
相关文章
|
1月前
|
存储 索引 Python
数组元素作函数实参
数组元素作函数实参
10 0
|
1月前
|
存储 C语言 C++
用数组名作函数参数
用数组名作函数参数
9 1
|
3天前
|
存储 程序员 C语言
语言数组元素作函数实参
语言数组元素作函数实参
6 0
|
1月前
|
存储 索引
数组元素做函数实参
在编程中,数组是一种常见的数据结构,用于存储多个相同类型的元素。函数则是执行特定任务的代码块,可以接收参数并返回结果。当我们将数组元素作为函数的实参时,可以将数组中的特定值传递给函数,以便在函数内部进行处理或计算。本文将介绍数组元素作为函数实参的概念,并附上相应的代码示例
20 0
|
1月前
函数的形参
函数的形参
10 0
|
1月前
|
存储 C语言
一维数组名作函数参数
一维数组名作函数参数
10 0
|
4月前
|
存储 C语言 索引
指针详解(const、指针运算、数组名的理解、传址调用和传值调用、一维数组的本质​)(一)
指针详解(const、指针运算、数组名的理解、传址调用和传值调用、一维数组的本质​)(一)
数组作为函数参数传参&数组名到底代表什么意义?
数组作为函数参数传参&数组名到底代表什么意义?
|
C++
C/C++形参和实参的区别?
C/C++形参和实参的区别?
237 0
C/C++形参和实参的区别?