数组指针的本质是指针,char(*P)[]是指针,还是个指向数组的指针,这么理解的话与char*p有啥区别呀?

如题所述

指向数组的指针,本质上不就是指针么
char(*P)[]就是一个数组指针,也就是一个指向数组的指针,但是你没有写数组的元素个数,这个是错误的

数组指针和普通的指针基类型是不同的,也就是说两者进行算术运算时结果会不同
比方说同样是进行+1操作,实际上加的地址值偏移量是不同的追问

那char(*p)[3]是不是 有三个指针可以指向三个字符串???????

追答

不是,这是一个数组指针本质上是一个指针

如果要实现你所说的,应该是定义为char *p[3];

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-17
char(*P)[]和char *P[]是有本质区别的,一个是数组指针,一个是指针数组。指针数组,说明这个声明中有多个指针,数组指针,指数组名的指针,即数组首元素地址的指针。char *p只是一个指针。追问

那么 char(*p)[]和char a[][]有啥联系和区别呢?

追答

大致的理解那就是 char(*P)[]和char *P[]的区别,只是a【】【】是固定长度的。

第2个回答  2012-03-17
char(*P)[]是指向数组的指针P
你这种声明方式可以直接把P声明为指向指针的指针,也就是char **P
与char *p有本质的区别 一个是指向指针的指针,一个是指向字符的指针本回答被提问者采纳
第3个回答  2012-03-17
相似回答