在 C 中初始化整个二维数组列
Initializing an entire column of 2D-array in C
在不使用以下代码的情况下,如何使用特定值(比如 1)初始化二维数组的整个列?
int a[row][col];
for(i=0; i<row; i++)
{
a[i][col]=1;
}
从 15 年前标准化的 C99 开始,您可以使用显式索引:
int a[10][10] = { [0][0] = 1, [1][0] = 1, /* more code here */, [9][0] = 1 };
使用 GCC,您可以使用更强大的语法,但当然您会失去可移植性并且不再使用标准 C 进行编程。
C99 和后者将允许您使用指示符初始化 整个row/column。但是你不能在不使用循环的情况下将 分配 1
到整个列。
默认情况下,int a[n]= {1};
会将数组的第一个元素初始化为 1
,其余元素将初始化为 0
。它没有将所有元素初始化为 1
。这些是您需要循环的 C 区域。
如果你想用相同的数字初始化二维数组的所有元素,你可以通过 gcc 提供的一个好的数组初始化快捷方式来继续,例如:
int a[5][6]={ [0 ... 4][0 ... 5]=1};
要查看效果我们可以使用循环
int i,j;
for(i=0; i<5; i++)
{
for(j=0; j<6; j++)
printf("%d ",a[i][j]);
printf("\n");
}
生成矩阵
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
还有另一种可能性,使用 memset()
但它仅限于类型 char (-128 ... 127 ) 或 unsigned char (范围在 0 ... 255 之间)
如果您确定数组的值在任何情况下都不会超过限制,那么您可以通过这样定义数组来使用它
char a[row][column];
并用string.h
库中的memset函数初始化
memset ( a,1, sizeof(a));
你所拥有的足以作为一个专栏。
如果你想初始化整个数组使用:
for (i=0; i < sizeof(a)/sizeof(int) ; i++) {
a[i] = 1;
}
以上使用单个循环计数器初始化数组 a
。由于 a
是类型 int
而不是 char
的数组,您不能使用 memset()
在不使用以下代码的情况下,如何使用特定值(比如 1)初始化二维数组的整个列?
int a[row][col];
for(i=0; i<row; i++)
{
a[i][col]=1;
}
从 15 年前标准化的 C99 开始,您可以使用显式索引:
int a[10][10] = { [0][0] = 1, [1][0] = 1, /* more code here */, [9][0] = 1 };
使用 GCC,您可以使用更强大的语法,但当然您会失去可移植性并且不再使用标准 C 进行编程。
C99 和后者将允许您使用指示符初始化 整个row/column。但是你不能在不使用循环的情况下将 分配 1
到整个列。
int a[n]= {1};
会将数组的第一个元素初始化为 1
,其余元素将初始化为 0
。它没有将所有元素初始化为 1
。这些是您需要循环的 C 区域。
如果你想用相同的数字初始化二维数组的所有元素,你可以通过 gcc 提供的一个好的数组初始化快捷方式来继续,例如:
int a[5][6]={ [0 ... 4][0 ... 5]=1};
要查看效果我们可以使用循环
int i,j;
for(i=0; i<5; i++)
{
for(j=0; j<6; j++)
printf("%d ",a[i][j]);
printf("\n");
}
生成矩阵
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
还有另一种可能性,使用 memset()
但它仅限于类型 char (-128 ... 127 ) 或 unsigned char (范围在 0 ... 255 之间)
如果您确定数组的值在任何情况下都不会超过限制,那么您可以通过这样定义数组来使用它
char a[row][column];
并用string.h
库中的memset函数初始化
memset ( a,1, sizeof(a));
你所拥有的足以作为一个专栏。
如果你想初始化整个数组使用:
for (i=0; i < sizeof(a)/sizeof(int) ; i++) {
a[i] = 1;
}
以上使用单个循环计数器初始化数组 a
。由于 a
是类型 int
而不是 char
的数组,您不能使用 memset()