[英]Integer pointer to char array
我正在開發一個應用程序(Visual Studio中為C ++語言),其中所有字符串都使用整數指針引用。
例如,我正在使用的類具有指向數據的整數指針和用於大小的變量。
{
..
..
unsigned short int *pData;
int iLen
}
我想知道
使用int
指針而不是char
指針有什么優勢?
考慮了很多之后,我懷疑原因可能是避免使用char指針而不使用null終止時可能發生的應用程序崩潰。 但是我不是100%肯定的。
在調試期間,我們如何檢查指針的內容,其中的內容是char數組或字符串(在Visual Studio上)。
在調試期間檢查內容時,我只能看到地址。 因此,我在調試中面臨困難。
使用printf
可以顯示內容,但是我不能在所有地方都做。
我懷疑使用整數指針的原因可能是為了避免應用程序崩潰,如果使用char指針而不使用空終止符可能會發生崩潰。 但是我不是100%肯定的。
可能是為了避免此類程序錯誤,將其視為整數指針。
我正在使用的類具有指向數據的整數指針和用於大小的變量。
{
..
..
unsigned int * pData;
英特網
}
如果您認為這不是原因,請更正我。
請讓我們知道您使用的是哪種語言,以便我們為您提供更好的幫助。 至於您的問題:
使用int
數組與char
數組沒有任何好處。 實際上,使用整數數組會占用更多空間(如果每個int表示自己的字符)。 這是因為char占用一個字節,而整數占用四個字節。
至於調試時的打印內容,我不是Visual Studio的專家,因為我已經有一段時間沒有使用它了,但是大多數現代IDE允許您在打印之前進行內容轉換。 例如,在lldb中,您可以執行po (char)myIntArray[0]
(po代表打印)。 在Visual Studio中, 編寫自定義可視化工具應該可以解決問題 。
我不確定為什么要這樣做,但是如果出於某種原因要在字符串中存儲EOF字符,則需要一個指向int的指針。
MS Visual Studio通常使用UTF-16來存儲字符串。 UTF-16需要16位數據類型,您的應用程序使用unsigned short
表示,而更正確的名稱是uint16_t
(或者也許是wchar_t
,但我不確定)。
另一種存儲字符串的方法是使用UTF-8 ; 如果使用這種方式,請使用指向char
(不方便)或std::string
(更方便)的指針。 但是,您在這里別無選擇。 您將不會更改應用程序存儲字符串的方式(這可能太麻煩了)。
要查看您的UTF-16編碼的字符串,請使用專用的格式說明符 。 例如,在快速查看窗口中,輸入:
object->pData,su
而不只是
object->pData
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.