初始化我的数组时出错

Posted

技术标签:

【中文标题】初始化我的数组时出错【英文标题】:Getting an error initializing an my array 【发布时间】:2016-04-12 23:24:33 【问题描述】:

这是我的代码, 它是一个简单的代码,旨在为 50 个插槽初始化一个数组,用零填充它们。然后向用户询问位置数组[0] 的一个数字。然后它将该数字复制到前 25 个插槽并对其进行平方。然后它取相同的数字并将其乘以 3 并将其放在最后 25 个插槽中。然后程序打印数组,每 10 个元素换行。

我在 13:39 遇到错误:错误:数组必须使用大括号括起来的初始化程序进行初始化 16:34:错误:数组必须用大括号括起来的初始化程序初始化 19:11:错误:“双”之前的预期主表达式 7:9:警告:未使用的变量 'i' [-Wunused-variable]

 #include<iostream>  
    using namespace std;

int main()

double array[50] =  0 ;
double i;

        cout << "Type in your index nummber" << endl;
        cin >> array[0];

    for(int i = 0; i < 25; i++)
        double array[i] = array[0] * array[0];

    for(int i = 0; 25 < i && i <50; i++)
        double array[i] =  array[25] * 3;

    for (int i = 0; i < 50;) 
        cout << double array[i] << " ";
    if ((i + 1) % 10 == 0) 
        cout << endl;



   

下面的固定代码

  #include<iostream>  
using namespace std;

int main()

double array[50] =  0 ;
double i;

cout << "Type in your index number" << endl;
cin >> array[0];

for(int i = 1; i < 25; i++) 
array[i] = array[0] * array[0];


for(int i = 25; i < 50; i++) 
array[i] =  array[24] * 3;

for (int i = 0; i < 50; i++) 
cout << array[i] << " ";
if ( (i+1) % 10==0)
    cout << endl;
    

return 0;
   

结果:

输入您的索引号

4

4 16 16 16 16 16 16 16 16 16

16 16 16 16 16 16 16 16 16 16

16 16 16 16 16 48 48 48 48 48

48 48 48 48 48 48 48 48 48 48

48 48 48 48 48 48 48 48 48 48

【问题讨论】:

double array[i] 声明了一个名为 array 的变量。要引用已声明的变量,请使用它们的名称 array ;你不要重复他们的声明。 谢谢,我想我明白了! 【参考方案1】:

您已通过指定double array[i] 在任何地方使用数组声明。这是不正确的。只需使用array[i]

for(int i = 0; i < 25; i++) 
   array[i] = array[0] * array[0];


for(int i = 0; 25 < i && i <50; i++) 
   array[i] =  array[25] * 3;


for (int i = 0; i < 50;) 
    cout << array[i] << " ";

请注意,您的第二个循环是虚假的。它永远不会运行。只需将其更改为:

for(int i = 25; i < 50; i++) 
   array[i] =  array[24] * 3;

您的第一个循环将平方 array[0] 并将其存储在 array[0] 中,因此 array[1] 将是原始数字的 4 次方。如果这不是您的意图,请从 @ 开始迭代987654328@,不是i = 0

【讨论】:

我一开始就是这样,但是遇到了初始化错误,很害怕并全部更改,因为它给了我更少的错误。感谢您的解释。并且通过像您一样修复第二个循环,您只需将参数正确向前推就消除了对 and 语句的需要? 嗯,是的,更不用说让循环真正运行了。你有它的方式,i 从 0 开始,循环条件失败,因为 25 not 小于 0。你显然希望循环 begin 在 25,并在达到 50 时结束【参考方案2】:

其中有一些错误。试试这个。它编译并运行。不确定输出是否是您想要的...

第一个问题是这个

for(int i = 0; i < 25; i++)
    double array[i] = array[0] * array[0];

C++ 编译器将此视为它不支持的新可变长度数组。你这样做了几次。第二个问题是这个 for 循环中的测试表达式......

for(int i = 0; 25 < i && i <50; i++)
  double array[i] =  array[25] * 3;

它永远不会测试为真,因为int i = 0; 意味着25 &lt; i 总是假的。

#include <iostream>  
using namespace std;

int main() 
  double array[50] =  0 ;
  double i;
  cout << "Type in your index nummber" << endl;
  cin >> array[0];
  for(int i = 0; i < 25; i++)
    array[i] = array[0] * array[0];
  
  for(int i = 25; i < 50; i++)
    array[i] =  array[25] * 3;
  
  for (int i = 0; i < 50; i++) 
    cout << array[i] << " ";
    if ((i + 1) % 10 == 0) 
      cout << endl;
       
  
  return 0;

【讨论】:

可以解释您更改的内容和原因。仅代码答案导致Cargo Cultists。

以上是关于初始化我的数组时出错的主要内容,如果未能解决你的问题,请参考以下文章

在c ++中初始化构造函数中的c数组时出错

释放模块中声明的变量时出错

在 C++ 中初始化对象数组时出错

初始化二维数组时出错[重复]

keil C 编程初始化指针函数数组时出错

尝试初始化嵌套数组时出错“赋值表达式的左侧可能不是可选的属性访问。”