char *p1,p2为啥不对?
相信不少同学在学完指针后尝试定义两个指针会这样写,并且编译没有错误,使用P1也没有问题,但尝试使用P2的时候可能会发现不对劲!
为什么呢,p2可能仅仅是个char类型的变量,并非是一个指针!
为何是这样,相信不少这么定义并且觉得正确的同学会有这样的理解,那就是:char *属于类型,p1和p2是变量名,有何不妥呢?然而我们可能因为便于理解,被教理解为:char 和*是一个整体,但事实上并非如此,C语言中这些定义是由两部分组成,那就是基本类型和声明符,基本类型没什么疑问,重点是后面这个声明符,声明符并非是简单的一个变量名!它除了包含标示符,也包含像*、[]、()这些东西!表明这个声明符里的这个变量它是这个类型的指针、或者是数组等等。那么现在回到刚才这个问题,char *p1,p2来看,他们的基本类型都是char类型,标示符是p1,p2,但他们的声明符就不一样了,一个是*p1,一个是p2.所以导致他们的意义不同的原因!
明白之后,我们想一句话定义多个指针类型的问题也就解决了!
学明白的同学记得点赞哦!
有不明白的地方随时留言!