读书人

C/C++三拇指针的“ ++ 与 * “的故事

发布时间: 2012-09-17 12:06:51 作者: rapoo

C/C++中指针的“ ++ 与 * “的故事

前面写过一篇关于C/C++左值的文章(http://blog.csdn.net/love_cppandc/article/details/7782606),那篇文章里提到过i++与++i的区别,但是只是在i为整型时的一些情况。现在,我们讨论一下当指针++与*混用的一些情况。

1. (i) char *ptr = "Hello";

printf("%c",*ptr++);

结果为 H。

(ii) char *ptr = "Hello";

printf("%c",*(ptr++));

结果仍为H。

这两种情况等价,原因如下:

*和++都属于二级运算符,为右结合优先,都是先++,后*。

<==> char* temp;

temp = ptr;

ptr = ptr + 1;

return *temp;

2.

char *ptr = "Hello";

printf("%c",*++ptr);

结果为 e。

<==> ptr = ptr + 1;

return *ptr;


读书人网 >C++

热点推荐