2016-08-02 69 views
-1

此代码片段用于产生模式。阵列类型具有用于模式匹配的不完整元素类型

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

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; 
} 
+4

您是否投入了一些时间来查看哪条线有错误? –

+1

您的阵列没有大小。 –

+3

@Linus Choudhury指定使用哪种语言。 –

回答

0
char a[][]; 

你并不确定在声明数组的大小(这就是为什么错误)。你需要在声明数组时声明大小。

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

如果你想让动态大小使用指针或使用VLA的。

1

阵列

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++) 
       ^^^^ 

定义,这是我始终是大于j内更大循环体。

相关问题