返回第五十章 指针(五)(1 / 2)程序媛养成计划首页

得到了老爹的肯定后我是信心大增,继续解读后面两句的含义。

「老爹,按照你说的办法,这第三句和第二句解读出来的含义是一样的啊,都是:p是一个变量,指向一个int常量。」

我迷惑道。

同时我向小弦子投去了询问的神色,小弦子也是摇了摇头,表示自己也没用弄明白。

「这是因为const来修饰一个变量的时候既可以放在数据类型前面,也可以放在数据类型后面,所以才导致了会出现这样的情况。

至于你们选择用哪一种形式,就看个人爱好了。」

「原来是这样啊,那好吧。最后一句是:p是一个常量,指向一个int常量。这样的话不但p的地址不能修改,*p也不能修改吧?」

「嗯,不错,你们已经掌握了指针和const结合的用法了。不过纵观我这么多年写代码的经验,上面四句代表的三种的情况,一般int const*这种使用是最多的,int* const 和 int const* const这两种用得比较少。

现在我们已经知道了,指针变量指向一个地址,和这个地址对应的可以是一个变量,也可以是一个数组。先前我们举的例子都是一维数组,那指针变量是不是可以指向一个多维数组呢?比如说二维数组。

答案当然是可以的,当你用一个指针指向一个多维数组的时候,你就会神奇地发现,多维数组一下子就变成了一维数组,这恰好说明了数组其实就是内存中的一段连续空间。

具体的我这这里就不多讲了,你们有兴趣自己可以写段代码试一试。到这里,指针和数组的结合使用我基本上就讲完了。

哦,对了,还忘了字符数组,瞧我这记性。唉,看来真的是老了。但凡是三十五岁前一天也不至于这样啊。」

老爹拍了拍自己的脑袋,感叹一声岁月催人老。

「其实将字符数组主要是为了讲字符串,现在我们都知道字符串其实就是一个字符数组,以前我们表示一个字符串可能是这样:

char str[]=“hello world“;

还记得这个字符数组长度是多少么?」

「1……2……10……11……哦,不对!是12,用引号赋值的字符数组会自动加上反斜杠0!」

「嗯,不错不错,还记得这个!

现在有了指针,我们还可以用另外一种方式来表示字符串:

char* str =“hello world“;

这样是不是更加简洁,优雅?」

「不就省了一个字符嘛,有什么好简洁、优雅的?」

我翻了一个白眼。

「好吧,萝卜青菜,各有所爱。说到这里,其实还有一种更加优雅的写法:

typede char* String;

int main(int argc, char const* argv[])

{

String name =“zhangsan“;

print(“%s“, name);