2

我正在使用 Visual Studio 2010 在 Windows 上制作 C 程序。

我正在将一个 wchar_t 数组传递给一个函数。

//in main
wchar_t bla[1024] = L"COM6";

mymethod(bla);

static void mymethod(wchar_t *bla) {
    //do stuff
}

我使用调试器观察 bla, sizeof(bla) 并注意到在 main 中, bla 是 type wchar_tsizeof(bla) = 2048但在 mymethod 中, bla 是 typeunsigned short*并且 has sizeof(bla) = 4

为什么会这样?

我想将 bla 传递给该方法,以便该方法可以更改数组而不是返回已编辑的数组。但是,swprintf 不起作用,因为我希望 sizeof(bla) 为 1024 而不是 4。

干杯。

4

2 回答 2

1

主要是您正在计算数组的大小:

sizeof(bla); // 1024 * sizeof(unsigned short) = 2048 

在你的函数中,如果你使用 sizeof,你正在计算指针的字节大小:

sizeof(bla); //means sizeof (wchar_t *) = 4
于 2011-09-20T16:15:39.943 回答
0

我觉得参数函数是wchar_tVS2010 中的类型很奇怪,因为wchar_t它只是unsigned short. 差异大小很明显,因为一个是数组,另一个是指针。如果这是 C++,您可以引用该数组。您将无法从内部获取数组的大小,mymethod因此如果需要,请将其添加为另一个参数。

于 2011-09-20T16:14:07.543 回答