我正在尝试打印出一个整数数组,其长度在C ++中我不知道。这是我的尝试。
int i = 0;
while ( X != NULL){
cout << *(X+i) << " ";
i+=1;
}
X是数组。我的问题是停止打印最后一个元素。
答案 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)
您有几个选择:
(2)