关于指针数组的问题,求解答/
char *p={"hello","asdasd","howare","cjc"}; 指针数组不是储存的是地址吗?地址的长度应该都一样吗?为什么储存地址的地址长度都不一样啊? pp+1 p+2 他们之间相差的长度都不一样? 看图片打印的第一行:首先每个数组元素都是指针,要想打印这些指针的地址就要得到指针,这点可以理解吧。那指针数组得到指针元素就是指针的下标呀,比如你要得到"asdasd"这个字符串的指针,就要p,p存放的就是指向这个字符串的指针,然后就可以打印这个指针地址了。第二行:就是你说的不一样的地方,p是个指针,p+1就是在p的基础上加上指针的存储大小,我最后一行打印的就是p在我电脑系统上占的大小,是4个字节,那p到p+1就相差4个字节,地址就相差4,同理,p+2到p+1也是4。
不要把指向的地址和指针自身占用空间混起来,一个是对外的,一个是对内的,不一样的
丶忘却的年少o 发表于 2017-10-18 23:41
看图片打印的第一行:首先每个数组元素都是指针,要想打印这些指针的地址就要得到指针,这点可以理解吧。那 ...
我的编译器是DEV的,跟你编的程序一样。但是地址相差有4的有8的,不像你都是4,所以我刚才挺困惑的。 哦,这样呀,那你要带图上来,不然没办法知道你的问题是什么情况。不过一般都是准的,应该是编译器算法不一样。你可以单独声明一个指针x,然后打印下x+1,x+2看看
页:
[1]