调整指针长度,扩大赋值范围以及其它关于类型的问题

本文介绍了C语言中指针操作与数据类型转换的技巧,包括多维数组的初始化与访问、短整型与长整型之间的转换示例、不同数据类型的隐式转换现象及如何通过指针实现跨数据类型的有效赋值。
一、
int aa[2][3][2]={{{1,2},{3,4},{5,6}},{{7,8},{9,10},{1,2}}};
__int64 b=*(__int64*)aa[1][2];
__int64 a;
a=b>>32;//高位
printf("%d\n",a);
int c;
c=(int)b;//低位
printf("%d\n",c);
输出:2
     1
二、
int a=0x0101;
short b;
b=a;
这样赋值连个warning都没有,是无一点问题的。
同样地:
int a=0x41;
unsigned char b;
b=a;
这样也是OK的。
 
三、
设dst是一个指向short指针,那个它只能16位地移动 ,如果:
(*int)dst[0]=val;
(*int)dst[1]=val;
这样指针能32位地移动。
结合赋值可以有:
int8_t ref[2][48];
dst=&h->mb.cache.ref[i_list][X264_SCAN8_0+x+8*y]
((uint32_t*)dst)[0] = val2;

转载于:https://www.cnblogs.com/yurius/archive/2013/02/24/2924150.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值