我的2D阵列的元素类型是什么?(C新增)



所以我有下面的代码,我想知道我的元素的类型是什么。我希望它们是整数,但我不知道为什么当我给某组索引分配零时,我必须使用撇号。我的元素类型是什么?输出是一个10by10的零数组,但我需要元素是整数

#include <stdio.h>
#include <stdlib.h>
int main() {
int accumulator[10][10];
int i,j;
for (i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
accumulator[i][j] = '0';
printf("%c ", accumulator[i][j]);
}
printf("n");
}

return 0;
}

对于算术,请使用int 0。对于字符串,请使用字符"0"。

printf("Number %dn", 0);
printf("Char %cn", '0');

输出:

Number 0
Char 0

在此语句中

accumulator[i][j] = '0';

整数字符常量'0'具有int类型和字符"0"的代码值。例如,在ASCII中,它等于tp 48。

如果你想用零初始化数组,那么你可以像一样在声明中初始化数组

int accumulator[10][10] = { 0 };

或写入

accumulator[i][j] = 0;

至于你的问题,那么二维数组的元素类型是int[10]。也就是说,阵列的元素是一维阵列,其依次具有其元素的类型int

你可以像一样重写声明

int ( accumulator[10] )[10];

或者你可以引入一个typedef名称,比如

typedef int T[10];

然后像一样重写二维数组的声明

T accumulator[10];

现在可以直观地看到,阵列的元素的类型是对应于类型int[10]T

在这个表达式中

accumulator[i][j]

同胞表达

accumulator[i]

给出了数组的第i个元素,正如所指出的,它是一维数组。将下标运算符应用于上述表达式,可以得到二维数组元素的一个元素

( accumulator[i] )[j]

其具有类型CCD_ 6。

为什么当我将零分配给某组索引时,我必须使用撇号

因为您使用了错误的printf格式说明符。如果要打印整数,请使用%d而不是%c

printf("%d ", accumulator[i][j]);

最新更新