int b[10];
printf("b:%d,b+1:%d,&b:%d,&b+1:%d\n",b,b+1,&b,&b+1);
b和&b的结果输出是一样的,都是数组的首地址,但是b+1和&b+1的结果不一样,因为它们两个的数据类型不一样,b+1的结果是在b的地址上加4,因为b表示数组的首元素地址,是int类型的,而&b表示的是整个数组的地址,是一个数组类型,所以&b+1是指数组后面的下一个位置的开始,所以是b的地址加40。如果sizeof(b),得到的结果是40
数据类型的本质是:固定大小内存块的别名。
void的字面意思是“无类型”,void *则为“无类型指针”,表示可以指向任何类型的数据。void *作为右值赋值给其他指针时需要强制类型转换。