C语言 字节大小问题

UCHAR*putCharArray[10][10];typedefunionunRec{ULONGulIndex;USHORTusLevel[6]'\;UCHARucP... UCHAR *putCharArray[10][10];
typedef union unRec
{
ULONG ulIndex;
USHORT usLevel[6]'\;
UCHAR ucPos;
}REC_S;

REC_S stMax,*pstMax;

四字节对齐方式时:
sizeof(pucCharArray) = ?
sizeof(stMax) = ?
sizeof(pstMax) = ?
sizeof(*pstMax) = ?

UCHAR *pszTest ="Hello";
UCHAR aucTest[]"Hello";

请问 sizeof(pszTest)=?
sizeof(*pszTest)=?
sizeofaucTest=?

能讲一下原因吗?谢谢各位大侠了。
展开
 我来答
luofl1992
2010-09-12 · TA获得超过710个赞
知道小有建树答主
回答量:561
采纳率:0%
帮助的人:584万
展开全部
typedef union unRec //联合结构,结构的大小取决于其中最大的那个的大小
{
ULONG ulIndex; // 4
USHORT usLevel[6]; // 12
UCHAR ucPos; //1
}REC_S; //大小为12
REC_S stMax,*pstMax;
UCHAR *pszTest ="Hello";
pszTest为字符串指针,大小为2个字节(指针大小,VC中为4字节)
这个跟aucTest一样,都是指针,所以都是2
*pszTest就是pszTest[0],是UCHAR了,也就是一个字节
UCHAR aucTest[]"Hello";
百度网友620d683a1
2010-09-13 · 超过25用户采纳过TA的回答
知道答主
回答量:253
采纳率:0%
帮助的人:104万
展开全部
sizeof(pucCharArray) = 4
sizeof(stMax) = 12 //联合 成员共享内存。取最大的
sizeof(pstMax) = 4 //指针
sizeof(*pstMax) = 12 //还是联合

后面两个
4 //指针

6 //“hello”+ “\0” 5+1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
陈学阳
2010-09-13 · TA获得超过2.8万个赞
知道大有可为答主
回答量:2.1万
采纳率:14%
帮助的人:5672万
展开全部
就这个问题这就引出了大端(Big Endian)与小端(Little Endian)的问题。

如果LSB在MSB前面, 既LSB是低地址, 则该机器是小端; 反之则是大端. DEC (Digital Equipment Corporation, 现在是Compaq公司的一部分)和Intel的机器一般采用小端. IBM, Motorola, Sun的机器一般采用大端. 当然, 这不代表所有情况. 有的CPU即能工作于小端, 又能工作于大端, 比如ARM, PowerPC, Alpha. 具体情形参考处理器手册.

举个例子来说名大小端: 比如一个long x, 地址为0x100, 它的值为0x1234567. 则它所占据的0x100, 0x101, 0x102, 0x103地址组织如下:

大端(Big Endian)
0x100 0x101 0x102 0x103
01 23 45 67
小端(Little Endian)
0x100 0x101 0x102 0x103
67 45 23 01

我们常用的处理应该都是小端(Little Endian)

不知道说清楚了没有

如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式