【发布时间】:2018-03-15 09:26:30
【问题描述】:
在下面的代码中,如果我使用数字而不是 a,它可以正常工作。但如果我使用a,则会出现以下错误:
Cannot convert 'char(*)[a]' to 'char(*)[2]' for argument '2' to 'void displayNumbers(int, char(*)[2])'
#include <stdio.h>
void displayNumbers(int,char num[2][2]);
int main()
{
int a=2;
char num[a][a];// if i write 2 instead of a, it works fine!
displayNumbers(a,num);
return 0;
}
void displayNumbers(int a,char num[2][2])
{
printf("%c\n",a+ num[1][1]);
}
为什么在这里使用a 或2 会有所不同?我有一种感觉,原因可能是微不足道的,但如果有人提供帮助,那就太好了。我使用的 IDE 是 Dev C++。
【问题讨论】:
-
@YaatSuka 这不是问题。我的程序实际上是不同的。为了了解我哪里出错了,我正在简化它
-
它在 Mac 上编译得很好。
-
您收到错误是因为您正在使用 C++ 编译器来编译 C 程序。
-
@Soc C 不是 C++ 的子集。
-
C 不是 C++ 的子集。这两种语言共享历史和一个共同的子集,但每种语言都具有另一种语言所缺乏的功能。此外,存在在两种语言中都有效但在每种语言中具有不同含义的简单结构。因此,用 C++ 编译器编译 C 代码是愚蠢的,除非它是有意编写的。