字符数组的整型指针
我正在使用整型指针引用所有字符串的应用程序(Visual Studio上的C++语言)。字符数组的整型指针
例如,我正在使用的类具有此数据的整数指针和大小的变量。
{
..
..
unsigned short int *pData;
int iLen
}
我想知道
-
是否有使用
int
指针代替char
指针的任何好处?经过深思熟虑之后,我怀疑原因可能是为了避免应用程序崩溃,如果不使用空终止使用char指针可能会发生应用程序崩溃。但我不是100%肯定的。
-
在调试过程中,我们如何检查指针的内容,其中的内容是char数组或字符串(在Visual Studio上)。
我只能在调试期间检查内容时看到地址。因为这个,我在调试时遇到困难。
使用
printf
可以显示内容,但我无法在所有地方完成。我怀疑使用整型指针的原因可能是为了避免应用程序崩溃,如果使用没有空终止符的char指针可能发生应用程序崩溃。但我不是100%肯定的。
可能是为了避免这样的程序错误它被当作整数指针。
我正在使用的类具有此数据的整数指针和大小的变量。
{
..
..
无符号整型* pData所;
INT艾朗
}
请纠正我,如果你认为这不能成为理由。
请让我们知道您正在使用哪种语言,以便我们可以帮助您更好一点。至于你的问题:
没有使用
int
阵列与char
阵列的好处。事实上,整数数组占用更多的空间(如果每个int代表它自己的字符)。这是因为char在一个整数占4的地方占用一个字节。至于在调试时打印东西我不是视觉工作室的主人,因为我在一段时间内没有使用它,但大多数现代IDE允许您在打印之前先投射东西。例如在lldb中,你可以做
po (char)myIntArray[0]
(po代表打印)。在视觉工作室writing a custom visualizer should do the trick。
该标准实际上并未指定'char'或'int'的大小,它依赖于编译器(尽管您提到的大小对于大多数现代编译器都是正确的) – UnholySheep
对不起,错过了使用的语言。它是C++&C。我编辑了我的问题以包含语言。感谢你的回答。我将通过自定义可视化工具查看。 – Sagar
@Sagar我已经评论过你的问题(这是Majster想澄清的)C和C++是不同的编程语言,需要不同的处理方式(和不同的代码)。请决定使用哪一个。 – UnholySheep
我不知道你为什么会想这样做,但如果你想EOF字符存储在您的字符串出于某种原因,你需要一个指针为int。
MS Visual Studio经常使用UTF-16来存储字符串。 UTF-16需要16位数据类型,您的应用程序使用unsigned short
,而更正确的名称是uint16_t
(或者wchar_t
,但我不确定)。
另一种存储字符串的方法使用UTF-8;如果使用这种方式,请使用指向char
(不方便)或std::string
(更方便)的指针。但是,您在这里没有任何选择;你不会改变你的应用程序存储字符串的方式(这可能太乏味了)。
要查看您的UTF-16编码字符串,请使用专用的format specifier。例如,在一个快速监视窗口,输入:
object->pData,su
,而不是仅仅
object->pData
*为什么*您正在使用一个int指针? – kfsone
1.否。2.修复代码中的数据类型。 –
我不明白这是否会在C或C++中实现任何有用的功能(也请确定您正在使用哪种语言,它们有足够的差异来要求不同的处理) – UnholySheep