c++的指针自增的使用,自增和*的混合运算

弄清楚运算符的优先级,对于一个程序员来说是极为重要的,虽然运算符的优先级是基础知识,但是很多时候我们会因小失大,所以学习一门语言一定要把基础东西弄懂,切不可得过且过!

下面我谈谈两个简单式子,并讨论他们的计算过程

由运算符的优先关系,++的优先级比*高

1.++*p++;

先计算p++,指针要往下移动一位,但注意这时候的++是后自增,所以得在这个表达式执行完p才是真正地向下移动了一位,此时*(p++)=*p,然后才进行前面的++运算,这时候*p的值加上1,所以在下面的例子中,h会加上1变成i;


2.++*++p;

先计算++p,这时候的++是前自增,所以此时的p已经向下移动一位,即已经移动到字符e的位置,*取值之后再进行++号运算,e+1=f,因为第一位h并没有做任何运算,所以值不变。


int main()

{
char str[]="hello world";
char *p=&str[0];
char *tem=&str[1];


//第一段代码  输出的值为 ello world   i

        ++*p++;
cout<<p<<endl;
cout<<*p<<endl;

cout<<*(--p)<<endl;


//第二段代码  输出的值为  fllo  world   h

       ++*++p;
cout<<p<<endl;
cout<<*p<<endl;
cout<<*(--p)<<endl;

}
发布了5 篇原创文章 · 获赞 1 · 访问量 4122
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览