【发布时间】:2013-03-26 20:10:29
【问题描述】:
char *sBuffer=new char[20];
char * sStringStart = sBuffer;
long * plMsgStart = (long *) sBuffer;// what is this line doing
long i=500;
*plMsgStart = i // what is this line doing
最后一行是在 char 数组中分配 500 吗?但是当我打印数组时,我得到了垃圾值
大家好,下面是实际代码,我在将代码从 c++ 转换为 c# 时遇到它,下面的代码是 c++ 函数的一部分,现在为什么下面的函数给出垃圾值?
char *sBuffer=new char[20];
char * sStringStart = sBuffer;
BSTR bsMsgBody= SysAllocString(L"Helo");
sStringStart+=4;
long * plMsgStart = (long *) sBuffer;
long l=50;
*plMsgStart=l;
sprintf(sStringStart, "%S", bsMsgBody);
printf("%S",sBuffer);
【问题讨论】:
-
假设它不疯狂,第一个
sizeof(long)字符被视为一个长变量并设置为 500。取决于数据存储方式的字节序。是的,它看起来像垃圾,但是通过它,你可以看到“500”是如何存储的