这是我在学习期间发现的:
#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])。还是还有我不知道的其他含义?
typedefwith数组类型,它也适用。因此,参数类型中的“指向指针的衰变”不仅仅是将语法糖替换[]为*,它实际上是在类型系统中进行的。这对于某些va_list可能使用数组或非数组类型定义的标准类型具有现实意义。
                int dis(char (*a)[1])。然后,将指针传递给数组:dis(&b)。如果您愿意使用C ++中不存在的C功能,那么您也可以说诸如void foo(int data[static 256])和int bar(double matrix[*][*]),但这是蠕虫的另一种形式。