函数c ++中的sizeof

时间:2016-11-02 00:15:10

标签: c++ arrays

当在原始数组上调用sizeof而不是函数的参数时,我注意到两种不同的行为,并在一个函数的参数上调用它。

示例:

我有六个整数的数组(在我的代码库中,它远不止于此)。我正在尝试编写将这些内容放在std::vector<std::pair<std::pair<int, int>, int> >中的函数,这意味着在构造向量之前,函数必须检查它给出的数组的大小是否为3的倍数。我在声明int数组后立即测试sizeof a / sizeof a[0],并且它正确地返回6.但是,当我这样做时:

#include <iostream>

using namespace std;

void doSomething(const int* a)
{
    cout << sizeof a / sizeof a[0] << endl;
    // do some real work down here
}

int main()
{

    int a[] = {40,30,60,38,609,780};
    doSomething(a);
}

返回6.为什么会发生这种情况?这种意外行为的最快和最肮脏的方法是什么?

0 个答案:

没有答案