相关疑难解决方法(0)

为什么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;
}  
Run Code Online (Sandbox Code Playgroud)

所以在变量中int dis(char a[1]),[1]似乎什么都不做,根本不起作用
,因为我可以使用a[2].就像int a[]char *a.我知道数组名称是一个指针,以及如何传达一个数组,所以我的谜题不是这个部分.

我想知道的是为什么编译器允许这种行为(int a[1]).或者它有其他我不知道的含义?

c c++ arrays

131
推荐指数
7
解决办法
9888
查看次数

标签 统计

arrays ×1

c ×1

c++ ×1