嵌入式里面,经常遇到很有意思的赋值,例如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
嵌入式真的是坑啊。