Bootstrap

指针强制转化为int的含义

嵌入式里面,经常遇到很有意思的赋值,例如char *p=0;其实就是c++里面的char *p=NULL。

然后下面3个打印,相信大家都知道:

 int p=10;

int *q=&p;

printf("p addr=0x%x.\n",&p);//打印p的地址。例如0x77781234

printf("q value=%p.\n",q);//打印指针q本身的内容,即p的地址。例如0x77781234

printf("*q value=%d.\n",*q);//打印指针q指向的内容。打印结果就是10

然后今天遇到一个mmap函数的返回值,怎么判断映射失败,很有意思:

if(((int)mmap(....))==-1)

{

    printf("mmap err.\n");

}

注意mmap返回值是void *。那(int)(void *)是什么含义呢?然后我去实际打印了下:

printf("q value=0x%x.\n",(int)q);//从打印就可以看出啦,是指针本身的内容,即p的地址。例如0x77781234

嵌入式真的是坑啊。

;