数组名arr出现在表达式int* p = arr中,会被转换为指向数组第一个元素的指针,即 int 5 转为 int * 类型。之后进行赋值运算。...不同指针类型不能相互赋值,相互赋值后会造成目标数据对象类型的改变,无法通过编译。
void* 类型为特例,它可以接受任意指针类型的赋值,也可以赋值给任意类型的指针。...在C语言中 void *类型不但可以接受任意类型的指针,也可以自动转换为任意类型的指针。
但在C++中,规则稍微严格了一点, void 仅能接受任意类型的指针,不能自动转换为其他类型的指针。...为了保证代码的兼容性,我们将 void 强制转为 char * ,避免在C++中编译出错。...多维数组名与指针
图片
数组指针的移动
#include
int main()
{
int b[5][10] =
{
{0,1,2,3,4,5,6,7,8,9},
{10,11,12,13,14,15,16,17,18,19