为什么C和C ++编译器在从未强制实施时允许函数签名中的数组长度?
这是我在学习期间发现的:
#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])
,[1]
似乎什么都不做,根本不起作用
,因为我可以使用a[2]
。就像int a[]
或char *a
。我知道数组名称是一个指针,以及如何传达一个数组,所以我的谜题不是这个部分。
我想知道的是为什么编译器允许这种行为(int a[1]
)。或者它有其他我不知道的含义?
12345678_0001
慕桂英4014372