数组类型具有用于模式匹配的不完整元素类型

array type has incomplete element type for pattern matching

本文关键字:类型 元素 模式匹配 用于 数组      更新时间:2023-10-16

此代码片段用于生成一个模式。

它显示"数组类型具有不完整的元素类型"错误!哪里出了问题?

int main(){
int n; 
char a[][];
scanf("%d",&n);
for (int i =0; i<n; i++)
{
for (int j=0; j<i; j++)
    {
        if(i>=j)
          a[i][j] = "#";
        else 
            a[i][j]=" ";
    }
}
return 0;
}

数组的声明

char a[][];

无效。每个维度中的元素数量未知。

如果它是一个C程序,那么你可以使用一个可变长度的数组。例如

int main( void )
{
    int n; 
    scanf("%d",&n);
    char a[n][n];
    //...

考虑到这种情况

if(i>=j)

没有意义,因为内部环路的定义类似

for (int j=0; j<i; j++)
              ^^^^

也就是说,在循环体内,i总是大于j。

char a[][];

声明中并没有确定数组的大小(这就是错误的原因)。声明数组时需要给定大小。

char a[10][10];  // or something

如果您想要动态地给出大小,请使用指针或VLA。