cc=(int16_t *)bb;
如下代码编译通过,无法运行
*cc= 1234;
环境ubuntu 14.04
因为你给的代码不全,所以不好说。
我们大致分析一下:
uint32_t bb = 0; // 这里声明并初始化了一个uint32_t的变量bb,初始化赋值了0uint16_t aa[10]; // 这里声明了uint16_t数组aa,有10个元素,没有初始化int16_t *cc; // 这里另外声明了指向uint16_t指针的指针变量 cc,加 * 表示指针变量bb = &aa[0]; // 把 aa 的地址 赋值给bb,注意 &aa[0] == aa,在32bit系统中,地址值是32bit无符号整数
cc=(int16_t *)bb; // 把bb的值,也就是aa的地址赋值给cc,并强制为int16_t类型指针
*cc= 1234 // 把cc指向位置的值设置为1234