[英]wchar_t array passed into function
我正在使用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),並注意到在主要方面,bla的類型為wchar_t
, sizeof(bla) = 2048
但在我的方法中,bla的類型為unsigned short*
,並且sizeof(bla) = 4
。
為什么會這樣呢?
我想將bla傳遞給該方法,以便該方法可以更改數組而不是返回已編輯的數組。 但是,swprintf無法正常工作,因為我希望sizeof(bla)為1024,而不是4。
干杯。
通常,您正在計算數組的大小:
sizeof(bla); // 1024 * sizeof(unsigned short) = 2048
在函數中,如果使用sizeof,則要計算指針的大小(以字節為單位):
sizeof(bla); //means sizeof (wchar_t *) = 4
我覺得奇怪的是,在VS2010中,參數函數的類型為wchar_t
,因為wchar_t
只是unsigned short
的typedef,已經很久了。 差異大小很明顯,因為一個是數組,另一個是指針。 如果這是C ++,則可以引用該數組。 您將無法從mymethod
獲取數組的大小,因此,如果需要,請將其添加為另一個參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.