簡體   English   中英

wchar_t數組傳遞給函數

[英]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_tsizeof(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM