Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中只初始化一行二维数组?_C_Arrays_Multidimensional Array_Initialization - Fatal编程技术网

在C中只初始化一行二维数组?

在C中只初始化一行二维数组?,c,arrays,multidimensional-array,initialization,C,Arrays,Multidimensional Array,Initialization,我有一个有两行的数组,第一行包含所有的素数,最大为997。第二行应该在初始化时包含所有0,因为它们将在稍后通过for循环获得值。但是,当我以以下方式初始化数组时: nt prime(int numfac[2][168], int num){ int j = 0, i = 0; int numfac[][] = { {2,3,5,7,1,13,17,19, 23,29,31,37,41,43,

我有一个有两行的数组,第一行包含所有的素数,最大为997。第二行应该在初始化时包含所有0,因为它们将在稍后通过for循环获得值。但是,当我以以下方式初始化数组时:

nt prime(int numfac[2][168], int num){
int j = 0, i = 0;
int numfac[][] = {
                  {2,3,5,7,1,13,17,19,
                   23,29,31,37,41,43,
                   47,53,59,61,67,71,
                   73,79,83,89,97,101,
                   103,107,109,113,127,
                   131,137,139,149,151,
                   157,163,167,173,179,
                   181,191,193,197,199,
                   211,223,227,229,233,
                   239,241,251,257,263,
                   269,271,277,281,283,
                   293,307,311,313,317,
                   331,337,347,349,353,
                   359,367,373,379,383,
                   389,397,401,409,419,
                   421,431,433,439,443,
                   449,457,461,463,467,
                   479,487,491,499,503,
                   509,521,523,541,547,
                   557,563,569,571,577,
                   587,593,599,601,607,
                   613,617,619,631,641,
                   643,647,653,659,661,
                   673,677,683,691,701,
                   709,719,727,733,739,
                   743,751,757,761,769,
                   773,787,797,809,811,
                   821,823,827,829,839,
                   853,857,859,863,877,
                   881,883,887,907,911,
                   919,929,937,941,947,
                   953,967,971,977,983,
                   991,997},
                   {0}
                   };
我的编译器返回:“数组类型的元素类型不完整”


如何在C语言中只初始化二维数组的一行?提前感谢。

您可以使用for循环在一行中初始化168列

inti;
对于(i=0;i<168;i++)
{
numfac[1][i]=0;
}

需要注意的是,声明为numfac[2][168]的数组实际上将包含元素[0,1]和[0,1,2…167]。此外,如果未设置值,则该值将为NULL,这将导致严重的计算错误。

您可能会列出您得到的编译器错误。我怀疑这与您只为第二行提供一个值有关,而不是168个值。@Dweeberly-使用编译器错误编辑。我想如果你初始化的元素数少于数组中的元素数,那么其余的元素会自动初始化为0?你可能是对的,因此我请求编译器出错。您所做的看起来非常像一个“不规则数组”的初始化,编译器可能会感到困惑。。。我现在已经很晚了:-)这到底有什么用?我不明白行numfac[1][I]=0是什么;做我需要第一行中的元素是997之前的素数,不确定如何通过for循环实现这一点。我想你给我的代码会将第二行初始化为全零,对吗?这是为了回答你的问题“如何才能在c中只初始化两个二元数组中的一行?”通过使用这个for循环,它会将一行中的每一列初始化为零,正如你所说的。“如果没有设置值,那么它将为空”除非它是静态的,否则这是不正确的。在C中,如果变量没有用特定的值声明,如果内存没有正确刷新,它几乎可以是任何变量B
int i;
for (i = 0; i < 168; i ++)
{
    numfac[1][i] = 0;
}