【问题标题】:Initializing only one row of 2-D array in C?在C中只初始化一行二维数组?
【发布时间】:2013-11-10 05:55:44
【问题描述】:

我有一个包含两行的数组,第一行包含不超过 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 中只初始化二维数组的一行?提前谢谢你。

【问题讨论】:

  • 您可能会列出您得到的编译器错误。我怀疑这与您只为第二行提供一个值有关,而不是 168 个值。
  • @Dweeberly - 编辑时出现编译器错误。我想如果你初始化的元素个数少于数组中的元素个数,剩下的就自动初始化为0?
  • 您可能是对的,因此我要求编译器错误。您所拥有的看起来非常像“参差不齐的数组”的初始化,编译器可能会感到困惑。 ...我现在很晚了:-)

标签: c arrays multidimensional-array initialization


【解决方案1】:

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

例如

int i;
for (i = 0; i < 168; i ++)
{
    numfac[1][i] = 0;
}

请务必注意,声明为 numfac[2][168] 的数组实际上将包含元素 [0,1] 和 [0,1,2...167]。另外,如果一个值没有设置,那么它就会为NULL,这将导致严重的错误计算。

【讨论】:

  • 这实际上会做什么?我不明白 numfac[1][i] = 0; 行是什么做。我需要第一行中的元素是最高 997 的素数,不知道如何通过 for 循环做到这一点。我认为你给我的代码会将第二行初始化为全零,对吗?
  • 这是对您的问题“如何在 c 中仅初始化二维数组中的一行?”的回答。通过使用这个 for 循环,它会将单行的每一列初始化为零。
  • “如果一个值没有设置,那么它将为 NULL”除非它是静态的,否则它是不正确的。
  • 在 C 中,如果一个变量没有用特定的值声明,它几乎可以是任何东西,如果内存没有正确刷新。 :B
猜你喜欢
  • 2021-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-06
  • 1970-01-01
  • 2020-10-30
  • 2018-08-21
相关资源
最近更新 更多