C++~选这题~下面能正确定义数组,并能正确赋值的语句是?请说明各个选项的理由。

A int N=5,b[N][N]B int a[1][2]={{1},{3}}C int c[2][]={{1,2},{3,4}}D int d[3][2]={{1,2},{34}}
2024年11月22日 15:00
有5个网友回答
网友(1):

A 错误,int b[N][N];N是变量,不是具体的数值。C++中声明数组时必需指明数组的大小,例如 int[5][5];B 错误,int a[1][2] 和 int a[2]是同一个意思,都表示的是同一个数组。而{{1},{3}}是二维数组的赋值,改为应 int a[2][1] ={{1},{3}}
C 错误 int a[2][];这里出错,C++中二维数组,第一个下标可以省略,但第二个绝不能省略,应该 改为 int a[][2]D 正确。最后 C++中 a[N][M](N,M都是具体的值,如果在声明时就直接赋值,N可以省略,M不能)N表示行数,M表示列数,即每行可以分配的内存大小

网友(2):

A错误,因为数组是在堆上分配空间大小必须在编译时知道,不可动态指定,如果N定义为常量或枚举,那就是正确的。
B错误,因为数组是一个1行2列的数组,一个{}表示一行
C错误,因为定义了一个2行的数组,但是列没有确定。改成 int c[][2]={{1,2},{3,4}}是可以的
D正确,定义了一个3行2列的数组,只初始化前2行数据,后面的用0初始化

网友(3):

选cA明显错。B和D都只能存一个元素,当时它明显存多了

网友(4):

A是错的 答案是D

网友(5):

A正确
B错误,因为int a[1][2]是 {{1, 3}}不是{{1}, {3}}
C正确,会自动确定为int c[2][2]
D错误,因为int d[3][2] 后面{{}, {}}只有2个,不是3个,缺少一组