我基本上是在寻找某种将数组的大小/长度传递给函数的“动态”方式。
我努力了:
void printArray(int arrayName[])
{
for(int i = 0 ; i < sizeof(arrayName); ++i)
{
cout << arrayName[i] << ' ';
}
}
但我意识到它只考虑它的字节大小而不考虑数组上有多少元素。
并且:
void printArray(int *arrayName)
{
while (*arrayName)
{
cout << *arrayName << ' ';
*arrayName++;
}
}
这至少打印了我所有的东西,但超出了我的预期,所以它实际上并没有按照我想要的方式工作。我认为这是因为我没有准确地告诉它我需要它有多大,所以它会“安全”地播放它并给我一些大尺寸,并最终在数组中的最后一个元素之后开始打印非常奇数的整数。
所以我终于解决了这个问题,但我相信那里有更好的东西!:
void printArray(int *arrayName)
{
while (*arrayName)
{
if (*arrayName == -858993460)
{
break;
}
cout << *arrayName << ' ';
*arrayName++;
}
cout << '\n';
}
运行程序几次后,我意识到我输入的数组的最后一个元素之后的值总是:-858993460,所以一旦遇到这个值,我就让它中断while循环。
include <iostream>
include <conio.h>
using namespace std;
// functions prototypes
void printArray (int arrayName[], int lengthArray);
// global variables
//main
int main ()
{
int firstArray[] = {5, 10, 15};
int secondArray[] = {2, 4, 6, 8, 10};
printArray (firstArray,3);
printArray (secondArray,5);
// end of program
_getch();
return 0;
}
// functions definitions
void printArray(int arrayName[], int lengthArray)
{
for (int i=0; i<lengthArray; i++)
{
cout << arrayName[i] << " ";
}
cout << "\n";
}
非常感谢。