关于指针的问题!高手一起来研究一下!保证有研究价值!
char tmpbuf[128]; // 声明一个长度128的数组
*((int*)tmpbuf) = 24; /* 要带入的字符串的长度为24, 在tepbuf[0]~tepbuf[3]
带入 将里带入字符串的长度信息
*/
[*][0][0][0]
↑
42 0 0 0
这样的写法我还是第一次见到,通过DB大概了解了工作过程,
通过(int*)来得到确定保存字符串长度信息的内存字节数。
我的问题是如果 不是int 4个字节,而是3个,5个的时候怎样的处理??
[解决办法]
内置的类型占用内存数没有3和5这种情况啊,
另外这句:
*((int*)tmpbuf) = 24; /* 要带入的字符串的长度为24, 在tepbuf[0]~tepbuf[3]
带入 将里带入字符串的长度信息
*/
不是带入的字符串的长度为24,是把int型的24赋给了数组,它的长度将是4个字节.
tmpbuf的长度现在相当于是128/4=32,每一个元素是一个int
[解决办法]
我的问题是如果 不是int 4个字节,而是3个,5个的时候怎样的处理??
没有这样的处理单位,
如果是 3 5 ,
那么只能按照原始的 char 逐个字节操作了 ~
[解决办法]
这是一个bug发生器,强烈建议不要这样用.