打印出任意长度的数组

时间:2010-08-13 18:26:29

标签: c++ arrays

我正在尝试打印出一个整数数组,其长度在C ++中我不知道。这是我的尝试。

    int i = 0;
    while ( X != NULL){
            cout << *(X+i) << " ";
            i+=1;
    }

X是数组。我的问题是停止打印最后一个元素。

7 个答案:

答案 0 :(得分:8)

数组中的最后一个元素必须是您可以观察的某个魔术值(0或-1或INT_MAX或类似的东西),因此可以使用它来停止循环。否则你必须找到记录数组长度的方法。

在C ++中没有标准的方法来确定任意数组的长度。

另一种选择是停止使用原始数组并使用更智能的对象,例如std::vector,它可以提供类似数组的访问,但也可以跟踪存储在其中的元素数量。

答案 1 :(得分:3)

int i = 0; 
while ( *(X+i) != NULL){ 
        cout << *(X+i) << " "; 
        i+=1; 
} 

假设您的数组以空值终止 但是如果你跟踪数组的长度会更好,或者更好地使用vector

答案 2 :(得分:1)

如果X是数组而不是指针,你可以找出数组的大小:

int X[unknownsize];

size_t arraysize = sizeof(X)/sizeof(int);

for(int i=0;i<arraysize;i++)
{
  cout << X[i] << " ";
}

答案 3 :(得分:0)

你写的循环永远不会修改X,所以假设它是一个有效的数组,循环将永远循环(或者直到它通过运行一些数量而崩溃)。

解决这个问题的C ++方法是不使用数组,而是使用std::vector。它会自动跟踪所有簿记,包括长度。

如果X是实际数组(如int X[5];),则可以使用(sizeof(X) / sizeof(X[0]))来获取数组中的元素数。如果将X作为指针传递,那么在C或C ++中无法获得长度。在这种情况下,必须传递长度和数组。

您可以在数组中使用“魔术”数字来玩游戏(例如,如果它必须始终为正数,则可以使用-1来表示结束,但这只是要求隐藏的错误。使用{{1} }。

答案 4 :(得分:0)

首先你需要找到数组的大小并迭代直到数组的大小来输出数组元素,如下所示,

size_t size = sizeof(X)/sizeof(X[0]);

for (size_t i=0; i<size; i++)
{
    cout << X[i] << " ";
}

答案 5 :(得分:0)

如果您声明了数组,则会有一个旧的C技巧来获得它的大小:

int  array[10];

for ( int i = 0; i < sizeof(array) / sizeof(array[0]); i++ )
  printf( "%d", array[i] );

答案 6 :(得分:0)

您有几个选择:

  1. 使用vector跟踪数组中元素的数量。
  2. 有一个长度变量并手动跟踪大小。
  3. 使用空指针标记数组的最后一个元素,即'\ n'
  4. (2)