我可以传递一个多维数组而不使用指针传递它的大小吗?
#include <iostream>
using namespace std;
void PrintArray( int(*pInt)[3] )
{
// how to iterate here printing pInt content?
int nRow = sizeof(*pInt) / sizeof(int);
cout << nRow << endl; // the result: 3 not 2! i get the nColumns instead!!?
}
int main()
{
int array[2][3] = { {1,2,3},
{4,5,6}};
int(*pArray)[3] = array;
PrintArray(pArray);
return 0;
}
答案 0 :(得分:2)
任何人都可以添加PrintArray的正确定义来打印其元素
不可能。当函数接受数组时,所有真正传递的是指向其第一个元素的指针。这就是数组如何工作的。
有没有办法将数组作为指针传递而不传递大小?
除非通过引用传递,否则数组总是作为指向第一个元素的指针传递。如果你只有一个指向第一个元素的指针,那么你需要某种方式来获取额外的大小信息。如果您通过引用传递,那么您已经拥有了大小信息,因为它是(完整)类型的一部分。
无论如何,你应该只使用std::vector
。原始阵列通常不会表现为#34;在很多方面,std::vector
都有。