关于第一个问题,b是数组名,也就相当于数组第一个元素的地址,是一个指针变量。意思就是数组名b就等于是*(b[0])。可见它是一个int *类型。类型匹配才能相互赋值,所以p也必须定义成int *类型。
你可以这样想
1、要是没有* ,那岂不是变成int p=b,这时p是int类型,如何等于一个数组的首地址?没有了*,那么p也就不再表示指针,所以*是不能省略。其实你可以将(int *)看做一个数据类型,和b是同一类型
PS:我也是新手