我可以传递一个多维数组而不使用指针传递其大小吗?
#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;
}
- 有没有人可以添加PrintArray的正确定义来打印它的元素?
- 有一种方法来传递数组作为一个指针,而不传递的大小?
- 谢谢你的匆匆一瞥
有没有人可以添加PrintArray的正确定义来打印它的元素
不可能的。当函数接受数组时,实际传递的只是一个指向数组第一个元素的指针。这就是数组的工作方式。
是否有一种方法来传递数组作为指针,而不传递大小?
数组总是作为指向第一个元素的指针传递,除非通过引用传递。如果只有指向第一个元素的指针,那么就需要在某个地方以某种方式获得额外的大小信息。如果您通过引用传递,那么您已经有了大小信息,因为它是(完整)类型的一部分。
无论如何,你可能应该只使用std::vector
。在许多方面,原始数组的行为不"正常",但std::vector
可以。