wchar_t数组传入函数

时间:2011-09-20 16:10:04

标签: c arrays visual-studio-2010 sizeof wchar-t

我正在使用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的类型为wchar_tsizeof(bla) = 2048,但在mymethod中,bla的类型为unsigned short*,有sizeof(bla) = 4

为什么会这样?

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

干杯。

2 个答案:

答案 0 :(得分:1)

在main中你正在计算数组的大小:

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

在函数中,如果使用sizeof,则计算指针的大小(以字节为单位):

sizeof(bla); //means sizeof (wchar_t *) = 4

答案 1 :(得分:0)

我发现VS2010中的参数函数类型为wchar_t很奇怪,因为wchar_t只是unsigned short的typedef,所以很长一段时间。差异大小是显而易见的,因为一个是数组而另一个是指针。如果这是C ++,你可以参考数组。您将无法从mymethod中获取数组的大小,因此如果您需要,请将其添加为另一个参数。