这是我在学习过程中发现的:
#include<iostream>
using namespace std;
int dis(char a[1])
{
int length = strlen(a);
char c = a[2];
return length;
}
int main()
{
char b[4] = "abc";
int c = dis(b);
cout << c;
return 0;
}
所以在变量中int dis(char a[1])
, the [1]
似乎什么也没做并且不起作用
全部,因为我可以使用a[2]
。就像int a[]
or char *a
。我知道数组名称是一个指针以及如何传达数组,所以我的困惑与这部分无关。
我想知道的是为什么编译器允许这种行为(int a[1]
)。还是有其他我不知道的含义?
这是将数组传递给函数的语法的一个怪癖。
实际上,在 C 中不可能传递数组。如果您编写的语法看起来应该传递数组,那么实际发生的情况是传递指向数组第一个元素的指针。
由于指针不包含任何长度信息,因此您的内容[]
在函数形参列表中实际上被忽略。
允许这种语法的决定是在 20 世纪 70 年代做出的,从那时起就引起了很多混乱......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)