我可以通过指针传递数组而不传递大小吗?



我可以传递一个多维数组而不使用指针传递其大小吗?

#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可以。

相关内容

  • 没有找到相关文章

最新更新