本帖最后由 apple_9938 于 2016-8-24 16:15 编辑
#include <stdio.h> int main(int *argc,char *argv[]) { int *p=NULL; //我们定义一个int *类型 char *p1=NULL;//char *类型 short *p2=NULL;//short *类型 long *p3=NULL;//long *类型 printf("int *p: %d, char *p1:%d,short *p2:%d ,long *p3:%d\n\r",sizeof(p),sizeof(p1),sizeof(p2),sizeof(p3));//我们通过sizeof这个关键字得到大小,经过试验得到都是4字节。 return 0; } 所以我们验证不管是什么类型的指针,那么都是4字节。
STM32 flash读取:
*(uint32_t *)0x8000000;//读一个字
*(uint8_t *)0x8000000;//读一个字节;
*(uint16_t *)0x8000000;//读半字;
由以上分析可知指针的大小都是4个字节,那么(uint32_t *)这个强制类型转换只是说明指针指向的数据是什么类型,不会改变指针本身,最前面的*就是取数据了,这个没有疑问。
|