簡體   English   中英

指向char數組的整數指針

[英]Integer pointer to char array

我正在開發一個應用程序(Visual Studio中為C ++語言),其中所有字符串都使用整數指針引用。

例如,我正在使用的類具有指向數據的整數指針和用於大小的變量。

{
    ..
    ..
    unsigned short int *pData;
    int iLen
}

我想知道

  1. 使用int指針而不是char指針有什么優勢?

    考慮了很多之后,我懷疑原因可能是避免使用char指針而不使用null終止時可能發生的應用程序崩潰。 但是我不是100%肯定的。

  2. 在調試期間,我們如何檢查指針的內容,其中的內容是char數組或字符串(在Visual Studio上)。

    在調試期間檢查內容時,我只能看到地址。 因此,我在調試中面臨困難。

    使用printf可以顯示內容,但是我不能在所有地方都做。

    我懷疑使用整數指針的原因可能是為了避免應用程序崩潰,如果使用char指針而不使用空終止符可能會發生崩潰。 但是我不是100%肯定的。

可能是為了避免此類程序錯誤,將其視為整數指針。

我正在使用的類具有指向數據的整數指針和用於大小的變量。

{

..

..

unsigned int * pData;

英特網

}

如果您認為這不是原因,請更正我。

請讓我們知道您使用的是哪種語言,以便我們為您提供更好的幫助。 至於您的問題:

  1. 使用int數組與char數組沒有任何好處。 實際上,使用整數數組會占用更多空間(如果每個int表示自己的字符)。 這是因為char占用一個字節,而整數占用四個字節。

  2. 至於調試時的打印內容,我不是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.

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