易码技术论坛

 找回密码
 加入易码
搜索
查看: 678520|回复: 20

[教程] 很好、很有趣的指针示例

[复制链接]
发表于 2006-10-30 13:36:45 | 显示全部楼层
2楼附带改编版,更容易看出那些指针用法的区别~
  1. #include <iostream>
  2. using namespace std;
  3. char s[]="desolate",*p=s;
  4. int main()
  5. {
  6.   cout<<"*p++=="<<*p++<<endl;
  7.   p=s;
  8.   cout<<"*(p++)=="<<*(p++)<<endl;
  9.   p=s;
  10.   cout<<"*p=="<<*p<<endl;
  11.   p=s;
  12.   cout<<"*++p=="<<*++p<<endl;
  13.   p=s;
  14.   cout<<"*(++p)=="<<*(++p)<<endl;
  15.   p=s;
  16.   cout<<"++*p=="<<++*p<<endl;
  17.   p=s;
  18.   cout<<"++(*p)=="<<++(*p)<<endl;
  19.   return 0;
  20. }
复制代码
结果:
*p++==d
*(p++)==d
*p==d
*++p==e
*(++p)==e
++*p==e
++(*p)==f
发表于 2006-10-30 13:50:36 | 显示全部楼层
LZ那个不是C+++吧...
还有过多的++又不加括号会把人弄晕的,而且不同的编译器做出来的程序还可能是有区别的。
完全不适合新手看。
发表于 2006-10-30 16:06:16 | 显示全部楼层
因为写了cout,所以算c++代码吧=v=
搞脑筋用的代码,对于深刻理解这些诡异的运算符有帮助。
 楼主| 发表于 2006-10-30 19:19:19 | 显示全部楼层
引用第2楼yzk03702006-10-30 13:50发表的“”:
LZ那个不是C+++吧...
还有过多的++又不加括号会把人弄晕的,而且不同的编译器做出来的程序还可能是有区别的。
完全不适合新手看。

我汗,怎么说呢,这个题目很经典,至于++的问题,在C++里和C里不太一样,我附带了运行结果,应该可以学到些东西吧。
这个是给新手看的,如果这都看不懂又不愿意去研究研究我看就不用学编程了……
我也算个新手啊,我都能看懂。
发表于 2006-10-30 19:43:33 | 显示全部楼层
比如类似"*p++"的运算符,很多人都不知道到底是p先自增还是先解引用,就是有二义性。
所以一般都会加上括号(*p)++或者是*(p++)。
要记得代码是给人看的,不是给机器看的,除非你是运算符控...
 楼主| 发表于 2006-10-30 19:54:41 | 显示全部楼层
哦,原来如此。
我开始也是不太清楚,但是,对照运行结果一看就可以一目了然了。
这里主要是体现指针的自加/减符号写的地方不同,结果的不同。不是为了比较++p/p++的区别,请大家注意分别拉~
发表于 2006-10-30 20:29:57 | 显示全部楼层
这么写程序的直接T飞 看都不看~
 楼主| 发表于 2006-10-30 20:58:54 | 显示全部楼层
写程序当然不要这样子,但是学的时候,基础的东西我想还是多研究下比较好^-^b
发表于 2006-10-30 21:14:29 | 显示全部楼层
不要写成这个样子,但是要清楚为什么会有这个结果。
以后很可能会在某些考题上面看到……
发表于 2006-10-30 21:20:15 | 显示全部楼层
LS刚刚明明还是shooting,怎么变了...
发表于 2006-10-30 21:50:09 | 显示全部楼层
引用第9楼FantasyDR2006-10-30 21:14发表的“”:
不要写成这个样子,但是要清楚为什么会有这个结果。
以后很可能会在某些考题上面看到……

出这种考题的也应该T飞。。。完全木有意义嘛。。。
发表于 2006-10-30 22:22:23 | 显示全部楼层
所谓浅尝辄止和深入理解的区别就在这里:)
发表于 2006-10-30 23:03:15 | 显示全部楼层
引用第12楼FantasyDR2006-10-30 22:22发表的“”:
所谓浅尝辄止和深入理解的区别就在这里:)

先加和后加自然是要弄清楚的。。。但是 有括号不用白不用~
发表于 2006-10-30 23:07:56 | 显示全部楼层
而且考题也不会这么出吧
指针运算和自加这两者优先级好像没有明确的定义吧 不同的编译器做出来的结果还不一定相同。。。
发表于 2006-10-30 23:44:07 | 显示全部楼层
有啊,ANSI C++规定要右结合的~
发表于 2006-10-31 00:00:48 | 显示全部楼层
引用第14楼不炫耀会死星人2006-10-30 23:07发表的“”:
而且考题也不会这么出吧
指针运算和自加这两者优先级好像没有明确的定义吧 不同的编译器做出来的结果还不一定相同。。。

这种东西当然有规定,哪能乱来……
标准是干啥用的,你以为是跟着编译器作者走的?^_^
发表于 2006-10-31 13:20:44 | 显示全部楼层
写程序不空格不空行的直接无视……
发表于 2006-10-31 13:21:40 | 显示全部楼层
呃。。。。。。我错了嘛。。。
发表于 2006-11-4 22:51:04 | 显示全部楼层
LS是不是混乱羽翼?
发表于 2006-11-5 11:55:37 | 显示全部楼层
引用第19楼Still42006-11-04 22:51发表的“”:
LS是不是混乱羽翼?

yes you&#39;re right~

┌╮┌──┐╭─┬┐┐ ┌──┐─┐┌─┬─┐┐┌─╯┌─┐
 ││  │  │ │┐┌─╮│╮│╭└─┴┘┘│  │ │
┌╮├──┤└─┼─││└ └┤└┤├──┼─┤│  │ │
  └──╯┌─┴┐││╭ ┌┤┌┤└──┴─╯├──│ │
 │├╯├╯│  │││└─┘│┘│└──┼┼╯└──├─╯
└╯└─└┘└──╯└╯└──╯─╯╰┬─┴┼┘   └  
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-24 01:23 , Processed in 0.015215 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表