Akawa

ETY001的博客

由于前几天的未知错误,导致博客中断了几天。重新开张后的博客,做了以下的改动:
1.安装“春菜”插件(插件安装搜索MP-Ukagaka即可),插件首页:http://blog.lolily.com/wordpress-plugin-mp-ukagaka.html
2.安装了“wordpress连接微博”插件。详见这里http://www.smyx.net/

准备新开一个栏目,外文翻译栏目,用来提高一下自己的英语水平。也为了更好的了解最新的动态,毕竟最新的东西都在国外。

上次的C++实验课第二个题,我一直在调试,今天终于搞出来了。下面我把整个过程写一写。
题目:

【题目2】编写程序,输入十个国家名称用字符指针数组实现排序输出。

【要求】
① 程序的功能是实现字符串的排序输出,例如,输入10个国家的名字分别是”China”,”USA”,”Australia”,”Austria”,”Brazil”,”Japan”,”England”,”Canada”,”Italy”,”France”,则排序后输出的结果为
“Australia”,”Austria”,”Brazil”,”Canada”,”China”,”England”,”France”,”Italy”,”Japan”,”USA”
② 设计一个独立的函数ccmp,实现相应的功能
③ 函数调用时,参数通过字符指针数组传递
【提示】
① ccmp函数可按如下方式定义:
void ccmp(char * a[]);;
其中,字符指针数组a中的指针分别指向10个国家的名称字符串
② 程序可用中的 strcmp(char *s1,char * s2) 函数对两个字符串的先后顺序进行判定,当s1<s2时,返回值<0,当s1=s2时,返回值=0 当s1>s2时,返回值>0

我写的成品代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<iostream>
#include<string.h>
using namespace std;
void ccmp(char *a[]);
int main()
{
int i=0;
char* num[10]; //申请一个指针数组
char a[][10]={"China","USA","Australia","Austria","Brazil","Japan","England","Canada","Italy","France"};//初始字符串

for(i=0;i<10;i++)num[i]=a[i];//把字符串数组发给一个指针数组

ccmp(num);

for(i=0;i<10;i++)cout<<num[i]<<endl;//输出结果

return 0;
}
void ccmp(char* a[])
{
char *temp;
for(int i=0;i<9;i++)
{
for(int j=0;j<9-i;j++)
{
if(strcmp(a[j],a[j+1])>0)
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}

出现的第一个问题是,对于指针数组的理解刚开始有些模糊,不过现在已经算是明白了。先说一下什么是指针?指针就是一个存储地址的变量。比如说我们申请一个存储整型数据的空间来存储整数,那么这个空间的地址就是一个整型指针,申请方法如下:

1
2
3
4
//这里申请了一个整型指针,我习惯把*靠近int书写,这样更容易理解,这个下面会讲到
int* p;
int a=6;
p=&a;

上面这个小段程序,我们可以把变量a理解为一个小房子,这个小房子建设在内存里,而要找到这个房子需要有一个地址,这个地址就是平时我们所说的内存地址,而p也同样也是一个小房子,只是这个房子很特殊,只存储其他普通房子的地址,也就是变量a的地址。指针一直困惑人的地方就是p和p到底是什么意思?其实p在内存里面是没有空间的,也就是说p根本不是房子,p才是房子,就好比一把打开房门的钥匙,只有和p组合在一起成为p,才能读取出p中存放地址所指向空间内的内容(这里就是数字6)。那为什么申请普通变量的时候是int a;而申请指针变量的时候是int *p呢?这里a的地位难道和p不是一回事吗?很显然这不是一回事,但是就是这种书写导致了初学者的混淆,这也是为什么我习惯写成int* p;了,也就是说intint*不是一回事,而ap的地位是一样的,都是一个变量,只不过p只能用来存储地址。不知道我罗嗦这么多,大家是否看懂了,不过至少我现在明白了,嘿嘿~

那说完指针,就来看看指针数组。所谓的指针数组,就是一组变量每个变量都是用来并且只能用来存储地址的。在我写的那段程序中,用来存储全部字符串的数组a[][],第一维维数其实就是字符串的个数,第二维的维数即是每个字符串的最大字符个数。我出现的第一个错误就是在这里出现的。依照上面的分析,那么a[0]的值就是第一个字符串“China”的首字符的地址,如果用cout输出a[0]的话,得到的输出结果就是“China”,因此程序写出来的第一遍中没有那个num指针数组。我在第13行直接写的是 ccmp(a[]); 然后就是一系列的错误,后来发现不能这样写,而是应该把这些字符串的首字母的地址给一个指针数组,然后用这个指针数组进行传值。于是就有了num指针数组。但是在使用num时,又出现了很多错误,但是错误的本质都是相同的,都是出错在赋值运算上。也就是说从一个变量到另一个变量的赋值时出错,原因就是没有搞清楚你正在使用变量的类型,它里面存储的东西的类型,以及将要用来承接用的变量的类型和它能存储什么样的数据。前前后后调试了很多遍,把每一个变量的每种情形都搞明白了,这里的错误也就解决了。

第二个问题出在了strcmp()的使用上。最开始第26行,我写的是if(strcmp(a[j],a[j+1])),也就是没有那个”>0”。依照题目的意思只要a[j]>a[j+1],那么strcmp的返回值就是大于0的值,那么在if中就是真,但是运行的时候,排序就是不对。这里我插一句我是如何发现问题出现在这里的,下面的代码就是我的调试代码(只粘贴了ccmp函数),注意第8、11、12、13、17行的输出代码。

阅读全文 »

前言:平时日记都是在我的人人网和QQ空间上发布,毕竟里面涉及点不想让所有人看的东西,但是今天这篇很中性,所以就晒出来在博客上,也为最近没啥更新的博客填充点东西。

今天从老蒋师哥的人人那里看到了一篇文章《程序员的十层楼》(www.domyself.me/archives/1237.html我已经转到我的博客里啦,哈哈)。看完后甚是无语,在别人眼里,大家都觉得我的电脑操作水平挺高,但是说实话,我一直不觉得是,尤其是看完这篇文章后,我终于找到了我现在的位置,不到一层的水平而已,而我希望能在40岁前达到第6层的水平,那我就已经很知足了~

今天下午上操作系统,又正好说到了这篇文章中提到过的一个人,迪杰斯特拉(Dijkstra),以及他的两个成就,信号量和PV操作。迪杰斯特拉1930年出生,如果我没记错的话,他是1956年左右提出pv操作和信号量概念的,也就是说,他在26岁就已经达到了第八层科学家的水平。我想这其中除了他可能是个天才,还有自己的努力外,跟学校的教育方法有很大的关系吧。想想我们从小到大接受的教育,那些是在教我们做什么,我不知道,我也不想多说。

另外今天路过创新工场网站的时候,又一次看了遍李开复写给大学生的信。首先,我要说,我每次看这个信的时候,总是很厌倦此人,我想原因就是因为人家的一系列成就自己做不到而眼红,正所谓“羡慕嫉妒恨”就是这样吧。其次,因为有厌倦和讨厌的情绪在里面,所以看他写的每句话总是很抵触,虽然知道这种心理很不健康,但是实在是克制不住,我觉得这个跟从小受到的中国教育应该脱离不了干系。这让我想起来《三傻大闹宝莱坞》中男主人公被virus强行带到课堂上给大家讲课时男一号所做的一切,每个人在听到任务后,想到的第一件事是竞争,而不是知识给我们带来的乐趣是什么,每个人的大脑都被“竞争”所绑架,然后压力就越来越大,进而心态就开始变化,最后就出现了“羡慕嫉妒恨”。

别的不想说,我只是感到我在大环境面前貌似只能选择去屈服,除非我后半辈子衣食住行无忧,也尽管我一直在提醒自己做自己喜欢做的事情,甚至我的博客域名都是domyself.me。

也许中国大学生可能是世界上最迷茫的一群人吧……

4月2号博客出现了未知的错误,导致一直无法访问。现在网站已经恢复正常了,但是数据是3月24号的,丢失了将近20条评论和几篇博文,遗憾啊……

自西方文艺复兴以来,中国在自然科学方面落后西方很多,软件领域也不例外。当然现在中国的许多程序员们对此可能有许多不同的意见,有些人认为中国的程序员水平远落后于西方,有些则认为中国的程序员个人能力并不比西方的程序员差,只是整个软件产业落后而已。
那么,到底中国的程序员水平比西方程序员水平差,还是中国有许多优秀的程序员达到或超过了西方程序员同等水平呢?要解决这个问题,必须先知道程序员有多少种技术层级,每个层级需要什么样的技术水平,然后再比较中国和西方在各个技术层级的人数,就可以知道到底有没有差距,差距有多大。
当然,对于如何划分程序员的技术层级,不同公司或不同人会有不同的划分标准,下面的划分仅代表个人的观点,如有不当之处,还请砸板砖予以纠正。

第1层  菜鸟

第1层楼属于地板层,迈进这层楼的门槛是很低的。基本上懂计算机的基本操作,了解计算机专业的一些基础知识,掌握一门基本的编程语言如C/C++,或者Java,或者JavaScript,…,均可入门迈进这层。
在这层上,中国有着绝对的优势,除了从计算机专业毕业的众多人数外,还有大量的通信、自动化、数学等相关专业的人士进入这一行,此外还有众多的其他专业转行的人士,人数绝对比西方多出甚多。并且还有一个优势就是我们这层人员的平均智商比西方肯定高。
没有多少人愿意一辈子做菜鸟,因为做”菜鸟”的滋味实在是不咋的,整天被老大们吆喝着去装装机器,搭建一下测试环境,或者对照着别人写好的测试用例做一些黑盒测试,好一点的可以被安排去写一点测试代码。当然如果运气”好”的话,碰到了国内的一些作坊式的公司,也有机会去写一些正式的代码。
所以,菜鸟们总是在努力学习,希望爬更高的一层楼去。

第2层 大虾

从第1层爬到第2层相对容易一些,以C/C++程序员为例,只要熟练掌握C/C++编程语言,掌握C标准库和常用的各种数据结构算法,掌握STL的基本实现和使用方法,掌握多线程编程基础知识,掌握一种开发环境,再对各种操作系统的API都去使用一下,搞网络编程的当然对socket编程要好好掌握一下,然后再学习一些面向对象的设计知识和设计模式等,学习一些测试、软件工程和质量控制的基本知识,大部分人经过2~3年的努力,都可以爬到第2层,晋升为”大虾”。
中国的”大虾”数量和”菜鸟”数量估计不会少多少,所以这层上仍然远领先于西方。
大虾们通常还是有些自知之明,知道自己只能实现一些简单的功能,做不了大的东西,有时候还会遇到一些疑难问题给卡住,所以他们对那些大牛级的人物通常是非常崇拜的,国外的如Robert C. Martin、Linus Torvalds,国内的如求伯君、王志东等通常是他们崇拜的对象。其中的有些人希望有一天也能达到这些大牛级人物的水平,所以他们继续往楼上爬去。

第3层 牛人

由于”大虾”们经常被一些疑难问题给卡住,所以有了”大虾”们只好继续学习,他们需要将原来所学的知识进一步熟练掌握,比如以熟练掌握C++编程语言为例,除了学一些基础性的C++书籍如《C++ Primer》,《Effective C++》,《Think in C++》,《Exception C++》等之外,更重要的是需要了解C++编译器的原理和实现机制,了解操作系统中的内部机制如内存管理、进程和线程的管理机制,了解处理器的基础知识和代码优化的方法,此外还需要更深入地学习更多的数据结构与算法,掌握更深入的测试和调试知识以及质量管理和控制方法,对各种设计方法有更好的理解等。
学习上面说的这些知识不是一挥而就的,不看个三五十本书并掌握它是做不到的。以数据结构算法来说,至少要看个5~10本这方面的著作;以软件设计来说,光懂结构化设计、面向对象设计和一些设计模式是不够的,还要了解软件架构设计、交互设计、面向方面的设计、面向使用的设计、面向数据结构算法的设计、情感化设计等,否则是很难进到这个楼层的。
当然除了上面说的知识外,大虾们还需要去学习各种经验和技巧。当然这点难不倒他们,现在出版的书籍众多,网络上的技术文章更是不胜数,然后再去各种专业论坛里泡一泡,把这些书籍和文章中的各种经验、技能、技巧掌握下来,再去学习一些知名的开源项目如Apache或Linux操作系统的源代码实现等。此时对付一般的疑难问题通常都不在话下,菜鸟和大虾们会觉得你很”牛”,你也就爬到了第3层,晋升为”牛人”了。
看了上面所讲的要求,可能有些大虾要晕过去了,成为牛人要学这么多东西啊!要求是不是太高了?其实要求一点也不高,这么点东西都掌握不了的话,怎么能让别人觉得你”牛”呢?
需要提一下的是,进入多核时代后,从第2层爬到第3层增加了一道多核编程的门槛。当然要迈过这道门槛并不难,已经有很多前辈高人迈进了这道门槛,只要循着他们的足迹前进就可以了。想迈进这道门槛者不妨去学习一下TBB开源项目的源代码(链接:http://www.threadingbuildingblocks.org/),然后上Intel的博客(http://softwareblogs-zho.intel.com/)和多核论坛(http://forum.csdn.net/Intel/IntelMulti-core/)去看看相关文章,再买上几本相关的书籍学习一下。
在国内, 一旦成为”牛人”,通常可以到许多知名的公司里去,运气好者可以挂上一个架构师的头衔,甚至挂上一个”首席架构师”或者”首席xx学家”的头衔也不足为奇。有不少爬到这层的人就以为到了楼顶了,可以眼睛往天上看了,开始目空一切起来,以为自己什么都可以做了,什么都懂了,经常在网络上乱砸板砖是这个群体的最好写照。由此也看出,国内的牛人数量仍然众多,远多于西方的牛人数量,在这层上仍然是领先的。
也有不少谦虚的”牛人”,知道自己现在还不到半桶水阶段。他们深知爬楼的游戏就像猴子上树一样,往下看是笑脸,往上看是屁股。为了多看笑脸,少看屁股,他们并没有在此停步不前,而是继续寻找到更上一层的楼梯,以便继续往上爬。

第4层 大牛

从第3层爬到第4层可不像上面说过的那几层一样容易,要成为大牛的话,你必须要能做牛人们做不了的事情,解决牛人们解决不了问题。比如牛人们通常都不懂写操作系统,不会写编译器,不懂得TCP/IP协议的底层实现,如果你有能力将其中的任何一个实现得象模象样的话,那么你就从牛人升级为”大牛”了。
当然,由于各个专业领域的差别,这里举操作系统、编译器、TCP/IP协议只是作为例子,并不代表成为”大牛”一定需要掌握这些知识,以时下热门的多核编程来说,如果你能比牛人们更深入地掌握其中的各种思想原理,能更加自如的运用,并有能力去实现一个象开源项目TBB库一样的东西,也可以成为”大牛”,又或者你能写出一个类似Apache一样的服务器,或者写出一个数据库,都可以成为”大牛”。
要成为”大牛”并不是一件简单的事情,需要付出比牛人们多得多的努力,一般来说,至少要看过200~400本左右的专业书籍并好好掌握它,除此之外,还得经常关注网络和期刊杂志上的各种最新信息。
当”牛人”晋升为”大牛”,让”牛人们”发现有比他们更牛的人时,对”牛人”们的心灵的震撼是可想而知的。由于牛人们的数量庞大,并且牛人对大虾和菜鸟阶层有言传身教的影响,所以大牛们通常能获得非常高的社会知名度,几乎可以用”引无数菜鸟、大虾、牛人竞折腰”来形容,看看前面提过的Linus Torvalds等大牛,应该知道此言不虚。
虽然成为”大牛”的条件看起来似乎很高似的,但是这层楼并不是很难爬的一层,只要通过一定的努力,素质不是很差,还是有许多”牛人”可以爬到这一层的。由此可知,”大牛”这个楼层的人数其实并不像想像的那么少,例如比尔·盖茨之类的人好像也是属于这一层的。
由于”大牛”这层的人数不少,所以也很难统计除到底是中国的”大牛”数量多还是西方的大牛数量多?我估计应该是个旗鼓相当的数量,或者中国的”大牛”们会更多一些。
看到这里,可能会有很多人会以为我在这里说瞎话,Linus Torvalds写出了著名的Linux操作系统,我国并没有人写出过类似的东西啊,我国的”大牛”怎么能和西方的比呢? 不知大家注意到没有,Linus Torvalds只是写出了一个”象模象样”的操作系统雏形,Linux后来真正发展成闻名全球的开源操作系统期间,完全是因为许多支持开源的商业公司如IBM等,派出了许多比Linus Torvalds更高楼层的幕后英雄在里面把它开发出来的。
可能有些菜鸟认为Linus Torvalds是程序员中的上帝,不妨说个小故事:
Linus,Richard Stallman和Don Knuth(高德纳)一同参加一个会议。
Linus 说:”上帝说我创造了世界上最优秀的操作系统。”
Richard Stallman自然不甘示弱地说:”上帝说我创造了世界上最好用的编译器。”
Don Knuth一脸疑惑的说:”等等,等等,我什么时候说过这些话?”
由此可以看出,Linus Torvalds的技术水平并不像想像中那么高,只是”牛人”和”大虾”觉得”大牛”比他们更牛吧了。在我国,有一些当时还处于”大虾”层的人物,也能写出介绍如何写操作系统的书,并且书写得非常出色,而且写出了一个有那么一点点象模象样的操作系统来。我想中国的”大牛”们是不会比西方差的,之所以没有人写出类似的商业产品来,完全是社会环境的原因,并不是技术能力达不到的原因。
“大牛”们之所以成为大牛,主要的原因是因为把”牛人”给盖了下去,并不是他们自己觉得如何牛。也许有很多菜鸟、大虾甚至牛人觉得”大牛”这层已经到顶了,但大多数”大牛”估计应该是有自知之明的,他们知道自己现在还没有爬到半山腰,也就勉强能算个半桶水的水平,其中有些爬到这层没有累趴下,仍然能量充沛,并且又有志者,还是会继续往更上一层楼爬的。
看到这里,也许有些菜鸟、大虾、牛人想不明白了,还有比”大牛”们更高的楼层,那会是什么样的楼层?下面就来看看第5层楼的奥妙。

第5层 专家

阅读全文 »

/我赚钱了/
我赚钱啦赚钱啦 我都不知道怎么去花 我左手买个诺基亚右手买个摩托罗拉 我移动联通小灵通一天换一个电话号码 我坐完奔驰开宝马 没事洗桑拿吃龙虾 干嘛呢干嘛呢干嘛呢 说你呢 病人家属在哪人儿(妈。。) 病人该吃药啦

/双向收费 /
COME ON BABY 双向收费了 它怎么那么黑啊 它赛过活李魁 它是气死猛张飞 要拿着手机聊会儿天啊 你银子哗哗没 你可想清楚了 我可这就要接通了 我掏四毛你掏四毛咱俩就开始聊了 我还忘了告诉你我卡里没多少钱了 我减四毛我去四毛我还剩一块六啦 我再去四毛再减四毛我还剩八毛钱啦 我再去四毛再减四毛我还剩一块六 我 别聊了 赔啦

/二百块钱罚三分/
COME ON BABY 我现在不能接你的电话 我在开车路上全是警察 一旦我不慎被拿下呀 二百块钱罚三分呀 弄不好还吊销本儿呀。。。。

/阿里巴巴/
阿里 阿里巴巴 阿里巴巴从来就不接电话 阿里 阿里巴巴 阿里巴巴从来就不接电话 噢噢噢噢 无人应答无人应答 啊啊啊啊,呆会儿再打呆会儿再打

/西门大关人/
潘金莲儿 挑春帘儿 砸得我手机断了线 我笑咪咪地对她说 给我出来赔钱 我的手机是分期付款 按揭一下就好多年 舍不得打我也舍不得接 今年毁在你的手里面 我说大哥大哥你好吗 啪啊。。。

/新年成语接龙/
新年好新年好 欢迎你打电话来参加新年成语接龙活动 嗯 干 成功干 干净利索 所向披靡呀 迷迷糊糊 呼来唤去 去去就来 来来去去 去去就来 砰 唉哟 来者不善 善者不来 嘿 来者不善 善者不来 砰啪 来来回回 回眸一笑啊 笑口常开嘛 开开心心 新年快乐
/吾酷快板/
哎 闲言碎语不要讲 机主现在特别忙 五点多钟就起床他半夜两点上不了炕 没白天没黑夜是名符其实工作狂 当里个当当里个当当里个当里个当里个当 哎 那么你这位说了 他到底是接了这个电话接不了呢 我可有急事找他呀 哎 不要急来不要慌 有我们吾酷来帮忙 跟你唱跟你跳是跟你说完跟你笑 让你听了心欢喜是忘了给谁打手机 这就是 手机进了新世纪 机主不接也可以 要嘛你就发短信 要嘛你就听我唠唠叨叨唠唠叨叨说到底 说到底 当里个当当里个当当里个当里个当里个当

/吃饱撑的/
哎哟吃饱撑的 闲得没事儿 给卡里设了个密码 已经输错两次了呀 啊呀,倒霉催的 手一哆嗦又摁了一个YES 现在全锁上了呀 哎哟赶紧跑到营业厅去找找解决办法 却发现登记名字不是自己的 啊呀苦思冥想终于想起机主曾经是谁啦 是五六年前分手的她 你让我现在哪儿找去呀 呃 这个故事告诉我们分手前一定要过户

/上课不能接手机/
食不言
食不言
寝不语
寝不语
上课不能接手机
上课偷着接手机
不对 是上课不能接手机
上课偷着接手机
怎么回事儿啊 还不对 是上课不能偷手机
上课不能接。。。
哎呀 什么呀 你们都把我说乱了 应该是上课偷着接手机
老师 老师老师 你做人也得厚道点儿吧 你一会儿让我们翻来覆去说多少遍呀 您到底是让我们上课不能偷手机还是上课偷着接手机还是上课接着偷手机还不一串儿的手机呀
你们 我 我 我 啊 统统给我关手机
吾酷提醒:上课不能接手机

/麻将夜话/
在这种寂静的夜里 我还在这个小屋里 因为寂寞会一直伴我到天明 幸好还有你 我的朋友 打来这个电话 还有我身旁这三个陪我玩儿麻将的朋友 哎 赶紧出牌快点儿 他们催我了 我现在正落着听呢 所以不能接你这个电话 我是五六筒 等待生命中的四七筒 咚 四筒 哎哎哎 胡了 T胡 给钱给钱

/123接电话/
ONE 我不能接电话 TWO 我有个好办法 THREE 将你要说的话精简一下 然后发短信吧 FOUR 怎么你还没挂 FIVE 我看着电话直犯傻 你的执着彻底感动我啦 我现在就来接电话啊

阅读全文 »

最近在浏览一些Wordpress博客时发现人家的“页面”功能做的貌似和我的显示效果不一样,从网上查了一下,说可以使用模板,即自己复制page.php模板文件后,进行修改和制作后,重命名,并且上传到模板文件夹下,然后在后台“页面”里选择刚才新上传的模板即可。但是我操作了一下,发现在页面编辑里面根本就没有选择模板这一项,倒是在“快速编辑”中有,但是里面只有“默认”这一个选项。

又是在网上一阵搜索,发现貌似2.6版本后已经没有这个选项,但是可以通过修改模板文件名来实现。比如说,我的留言板的别名写的是guestbook,那么我想用的模板文件名就需要改为“page-guestbook.php”,这样博客就会自动使用这个模板文件啦。

今天C++学的指针,之前C语言课上讲过指针,但是当时几乎就没怎么深讲。今天讲的内容甚是让人头晕啊,回来后我在自己机器上把书上的示例程序修改了一下,仔细来看看指针。下面的就是我的指针学习程序。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//      Copyright 2011 ETY001 <[email protected]>
// Website:akawa.ink
#include <iostream>
using namespace std;
int main()
{
static char t[2][3][5]={"abcd","efgh","ijkl","mnop","qrst","uvwx"};
cout<<" t[i] "<<" &t[i] "<<endl;
cout<<"01::"<<t[0]<<" "<<&t[0]<<" <---t[0]"<<endl;
cout<<"02::"<<t[1]<<" "<<&t[1]<<" <---t[1]"<<endl;
cout<<"03::"<<t[0][0]<<" "<<&t[0][0]<<" <---t[0][0]"<<endl;
cout<<"04::"<<t[0][1]<<" "<<&t[0][1]<<" <---t[0][1]"<<endl;
cout<<"05::"<<t[0][2]<<" "<<&t[0][2]<<" <---t[0][2]"<<endl;
cout<<"06::"<<t[1][0]<<" "<<&t[1][0]<<" <---t[1][0]"<<endl;
cout<<"07::"<<t[1][1]<<" "<<&t[1][1]<<" <---t[1][1]"<<endl;
cout<<"08::"<<t[1][2]<<" "<<&t[1][2]<<" <---t[1][2]"<<endl;
cout<<"09::"<<t[0][0][0]<<" "<<&t[0][0][0]<<" <---t[0][0][0]"<<endl;
cout<<"10::"<<t[0][0][1]<<" "<<&t[0][0][1]<<" <---t[0][0][1]"<<endl;

cout<<"11::"<<t[0][1][0]<<" "<<&t[0][1][0]<<" <---t[0][1][0]"<<endl;
cout<<"12::"<<t[0][1][1]<<" "<<&t[0][1][1]<<" <---t[0][1][1]"<<endl;

cout<<"13::"<<t[0][2][0]<<" "<<&t[0][2][0]<<" <---t[0][2][0]"<<endl;
cout<<"14::"<<t[0][2][1]<<" "<<&t[0][2][1]<<" <---t[0][2][1]"<<endl;

cout<<"-----------------------------------"<<endl;
cout<<"1::"<<t<<" <--- t"<<endl;
cout<<"2::"<<t+1<<" <--- t+1"<<endl;
cout<<"3::"<<*t<<" <--- *t"<<endl;
cout<<"4::"<<*t+1<<" <--- *t+1"<<endl;
cout<<"5:"<<*(t+1)<<" <--- *(t+1)"<<endl;
cout<<"6:"<<*(*t+1)<<" <--- *(*t+1)"<<endl;
cout<<"7:"<<**t<<" <--- **t"<<endl;
cout<<"8:"<<***t<<" <---***t"<<endl;
cout<<"9:"<<**(t+1)<<" <---**(t+1)"<<endl;
return 0;
}

通过这个程序,对照着来看指针,就会看的比较明白。下面是程序的运行截图:

截图

从程序的运行结果中,我总结了以下几点:

1、直接输入数组名称的时候,数组名代表的是数组的入口第一个空间的地址,t和t[0],t[0][0]的地址都是一样的;
2、*t+1和&t[0][1]等价,*(t+1)和&t[1][0]等价;
3、对*t进行加1操作的时候,有时候是对t,也就是地址加一,结果是t对应的地址加上一个数据类型长度,而有时候则是对于*t所代表的值,也就是t地址所指向内存里的值进行加一(我不知道我这个理解对不对,希望高人指点,我在这里感觉有点晕)。

暂时就总结这么多,另外,补充一点,在编译过程中曾经出现错误提示,说cout没有定义,从网上搜索了一下,了解到以下情况:

<iostream>和<iostream.h>格式不一样  前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。 后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。 因 此,当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;当使用< iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。
解决方案一就是在头部加上
1
using namespace std;

,就像上面我的程序那样;
方案二就是把每个cout改为std::cout。

阅读全文 »

今天偶然的去我的GoogleAdsense账户上查看了一下,居然发现我的帐户上破0拉,哈哈,截个图留念一下。话说这是我从今年1月20日(/2011/01/20/add-google-adsense.html)正式开通的Adsense,到现在为止也就2000多次的显示,大家不要笑话阿~

由于最近服务器经常不给力,打开个页面居然要10s以上,有时候甚至到了20s,再忍耐了将近2个星期后,我不得不重新买了一个新的空间,并进行了调换。不过调换的过程也是痛苦的,在原空间的数据备份包下载速度几乎为0,我这还是用的迅雷离线下载,下了一个通宵才搞回来。

话说还是cpanel面板给力,linux服务器给力,一切调试配置起来都是那么的轻松。

另外,DM博客开通了自己的个人微博,用来用一句话记录生活,毕竟有时候没有那么多要说的,地址是:http://t.domyself.me,在页面的右上角也有连接。

0%