10
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])。それとも私が知らない他の意味がありますか?