`
为心中梦想挥剑的那一刹那
  • 浏览: 7414 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

c++程序设计梳理(谭浩强)1-2章

阅读更多

 这段时间,被京东的校招给弄得各种焦灼了。等了一个星期,竟然才一点点的发了北京地区的s级别offer!简直忍无可忍了!想来想去,还是静下心认真学好自己要学的东西才是王道。无论给我与不给我,都乃天命,何须过度的去纠结呢!所以开始继续我的c++之路!
 由于谭浩强这本c++包含了整个面向过程与面向对象的部分,所以我在面向过程部分会简单的几章合并来写,并挑出自己觉得重要的课后习题来写出代码,一并发出,在后面的面向对象的章节,我会着重分章来介绍与学习。一步步来,要的就是脚踏实地!主要的编写风格,我昨晚查了很多经验文章,自己也想了下,我会用那种列表形式来撰写,就是将我认为重要的并且难点难记点分上个1,2,3等等来列出,其中每条融入自己的想法与心得,有整个学生生涯各大考试笔试中经常遇到的,也有项目实践中碰到的等等,都会融入其中。此些文章,并不是什么高大上的前沿技术剖析或是什么高深算法经验总结之类的,要说只能是一种学习总结或是学习理,我是学习之人,向各位大牛前辈们致敬!向你们学习请教!就这样!

 

Chapter 1~Chapter 2

->C++的初步知识

1、 从c到c++已经这么多年,完完全全的贯穿了我的整个专业学习生涯(大学本科到研究生)。其中Unix、c、贝尔实验室、Ritchie、Bjarne Stroustrup、ANSI等等都是相互交融着的、你中有我我中有你的背景,一直以来不绝于耳。(p.s:c++11已经在2011年推出,介于普及度的问题,我先着手与老标准的c++,在接下来的《c++primer》的学习梳理中我再重点梳理新版的内容)

2、简单的c++程序

 

/*
大名鼎鼎的hello world起手程序
*/
#include<iostream>//头文件包含
using namespace std;//命名空间声明,作用在之后的详细章节中再介绍
int main(){//主函数入口,程序执行从此处
	cout << "Hello World!" << endl;//标准输出
	return 0;//返回值
}//程序结束
/*
终端输入的两数之和
*/
#include<iostream>
using namespace std;
int main(){
	int a, b, sum;
	cin >> a >> b;
	sum = a + b;
	cout << "a+b=" << sum<<endl;
	return 0;
}

 

3、函数要在使用之前进行声明或者定义。此处在我的理解就是,在我具体调用的地方,前面要么有这个函数的定义,要么是有这个函数的声明,其中定义与声明还有小小的差别,下面我将代码贴出,具体做注释! 

/**
两个数最大值
**/
#include<iostream>
using namespace std;
int main(){
	int a, b;
	int max(int, int);//函数声明(声明可以不用给出具体的形参变量,直接来参数类型就行)
	cout << "亲,输入a:"<<endl;
	cin >> a ;//输入a
	cout << "亲,输入b:" << endl;
	cin >> b;//输入b
	cout << "a与b最大的是 :" << max(a,b)<<endl;//函数调用
	return 0;
}
int max(int i, int j){//函数定义(定义需要具体的形参变量)
	return i < j ? j : i;//三目运算符
}

4、对象初识(此处介绍的是简单的面向对象知识,为整本书后面做铺垫)。详细的面向对象知识与梳理,在后面我会发出!现在在这里具体上一个class类和对象的代码!

/**
类与对象
**/
#include<iostream>
#include<string>
using namespace std;
class Student{//类定义
private:
	int score;//成员变量
	string name;
	bool sex;
public:
	Student(){}//构造函数
	Student(int score, string name, bool sex) :score(score), name(name), sex(sex){}//构造函数重载
	void display(){//成员函数
		cout << "分数是:" << score << ";名字是:" << name << ";性别是:" << sex << endl;
	}
};
int main(){
	Student s, s1(100, "jicheng", 1);//申请对象
	s.display();//调用对象的成员函数
	s1.display();
	return 0;
}

5、c++程序规范与构成:
 ①预处理命令(以“#”开始的)②全局声明部分(在函数之外的部门,可以是声明或是定义)③函数(包括主函数与普通函数) 

 此处要注意的是头文件包含的问题:原始c语言可以用“.h”结尾的包含方式包含标准库文件,例如#include<iostream.h>,如果这样写可以不用写下面的using namespace std就可以直接使用cin、cout、cer等,c++推荐的模式是不“.h”包含using namespace std的模式,为了兼容以前的c程序,故可以用老的c模式来编写,有的编译器也可以通过,但不推荐就是了。
6、c++程序编译运行过程:
编辑(.cpp文件)->编译(用源程序.cpp文件生成.obj文件)->连接(将.obj文件与库文件和其他目标程序连接生成可执行文件.exe文件)->执行


->数据类型与表达式
1、c++数据类型如下:(在c++11中还有很大的扩展)
基本类型->整型->短整型(short [int])(2字节)
              ->整型(int)(4字节)
              ->长整型(long [int])(4字节)
        ->字符型(char)(1字节)
        ->浮点型->单精度型(float)(4字节)
                ->双精度型(double)(8字节)
                ->长双精度型(long double)(VC:8字节;G++:12字节)
        ->布尔型(bool)(1字节)
        ->空类型(void)
非基本类型->枚举类型(enum)
          ->数组类型(type[])
          ->结构体类型(struct)
          ->共用体类型(union)
          ->类类型(class)
          ->type *
指针类型(4字节)
(type为非void类型的数据类型;其中整型、短整型、长整型、字符型、单精度双精度型都有signed与unsigned之分,signed在类型前可以不用加此关键字,unsigned要必须加)
2、编译器是怎么区分char类型跟bool类型的(都占1个字节)?
 c/c++的编译器中有一个变量表,表的关键字段有(数据类型,变量名,首地址,值),每声明一个变量,就把这个变量的相关信息填进表中
3、常量的表示:
 十进制->123
 八进制->045
 十六进制->0XAB
 float型->0.23f
 double型->0.34
p.s:普通浮点类型不在后面加上“f”,编译器会当做双精度型处理;浮点与双精度类型的存储分为三个部分:符号部分、数字部分(必须小于1且小数点后第一位不能为0)、指数部分。
4、常用的转义字符:
 \n 回车转向下一行的第一列(10)
 \t 制表符(tab键的效果)(9)
 \0 空字符(0)
 \b 退格,移动到前一列(8)
 \r 回车转向本行的第一列(13)
 \f 换页转向下一页的开始(12)
 \' 单引号(39)
 \" 双引号(34)
5、常用ASCII码:
 'a' 97
 'A' 65
 '0' 48
p.s:小写比大写大32!
6、字符串常量:"abc"(最后还有一个'\0'结束符,故占3字节);字符常量:'a'
7、#define与const
 #define主要是从c语言继承过来的一种常量替换的模式。具体用define定义的常量叫做符号常量,在内存中并没用以他命名的存储单元,就是将程序中用到此符号的地方替换成define中定义成的符号,别没有具体的类型可言;
 const是c++程序推荐使用的一种方式,主要是定义的一种常变量。他拥有具体的类型,可进行差错检测,在内存中存在以他命名的存储单元,可以用sizeof求它的所占空间大小,与变量唯一不同的是不可写该其最初定义的值。
8、运算符问题(优先级):
   初等运算符(() [] -> .)

 ->单目运算符(new delete == -- sizeof * & !)

 ->算术运算符(<< >>)

 ->关系运算(> >= < <=)

 ->逻辑运算符(&& || & | ^)

 ->条件运算符(?:)->赋值运算符

 ->逗号运算符
9、标准输出(cout)的结合是自右向左的,e.g:

#include<iostream>
using namespace std;
int main(){
	int i = 0;
	cout << i++<<","<<i++ << endl;//结果是1,0
	return 0;
}

10、(i++)+(i++)+(i++)如果i的初始值是1,表达式结果是3,i最后的值是4.
11、逗号运算符的问题,举例说明:
 a=3*5,a*4
由于赋值运算符比逗号运算符的优先级别要高,所以a先等于3*5的值,再代入a*4的式子中去运算,整个表达式的结果就是最后a*4的值。

分享到:
评论
3 楼 xouou_53320 2014-12-01  
为心中梦想挥剑的那一刹那 写道
xouou_53320 写道
(i++)+(i++)+(i++)  没有这种写法
就算编译通过了, 不同的编译器出来结果也不一样


多谢指教!有时候会被各种考试中的题目给模糊了,我知道,真正实际情况又不同



不客气 , 很多试题只能出现在考卷上,  而答案不一定是对的
xouou_53320 写道
(i++)+(i++)+(i++)  没有这种写法
就算编译通过了, 不同的编译器出来结果也不一样


多谢指教!有时候会被各种考试中的题目给模糊了,我知道,真正实际情况又不同
1 楼 xouou_53320 2014-11-23  
(i++)+(i++)+(i++)  没有这种写法
就算编译通过了, 不同的编译器出来结果也不一样

相关推荐

    《谭浩强C++程序设计》书本笔记自己整理--2016查询参考

    以上是《谭浩强C++程序设计》第二章中关于数据类型和表达式的详细知识点梳理,涵盖了整型常量、浮点数、字符常量、符号常量、变量定义及初始化、算术运算符等多个方面。通过这些知识点的学习,读者可以更好地理解C++...

    C++程序设计谭浩强版本的课件

    谭浩强版《C++程序设计》课件是对教材内容的一种详细梳理与总结,它覆盖了从C++的基础语法到面向对象编程的核心概念。下面将根据课件的目录,对各章节涉及的关键知识点进行详细的解析。 #### 第1篇 基本知识 **第1...

    C++程序设计谭浩强100%完整·清华大学.pdf

    通过以上章节的知识点梳理,我们可以看出《C++程序设计谭浩强100%完整·清华大学》这本书系统全面地覆盖了C++语言的基础知识、面向过程编程以及面向对象编程的核心概念和技术。对于初学者来说,这是一本非常适合入门...

    C++程序设计谭浩强100%完整·清华大学

    ### 谭浩强《C++程序设计》内容概览 #### 第1篇 基本知识 第1章 C++的初步知识 - 1.1 从C到C++:介绍了C++语言的发展历程,如何从C语言演化而来。 - 1.2 最简单的C++程序:展示了最基本的C++程序结构。 - 1.3 C++...

    C++程序设计谭浩强版

    ### C++程序设计谭浩强版 #### 一、引言 ...通过上述对《C++程序设计谭浩强版》各章节内容的梳理,我们可以看出这本书覆盖了C++编程从基础知识到高级特性的各个方面,非常适合初学者系统学习C++编程。

    C++程序设计

    通过上述知识点的梳理,我们可以看到谭浩强老师编著的《C++程序设计》这本书内容丰富,覆盖了C++语言的基础知识、面向过程的程序设计、面向对象的程序设计等多个方面,适合初学者系统学习C++语言。

    C语言程序设计 谭浩强 学习笔记 word doc

    ### C语言程序设计知识点梳理 #### 一、C语言概述 **1.1 C程序结构特点** - **函数**: C程序的基本单位是函数。每个函数都有自己的功能,并且可以独立编译。 - **函数首部**: 包括函数类型、函数名以及参数列表...

    c程序设计基础

    ### C程序设计基础知识点梳理 #### 一、C语言简介 - **定义**: C语言是一种通用的、过程式的计算机程序设计语言,具有高效、灵活的特点。 - **地位**: 国际上最著名的高级程序设计语言之一,使用范围广泛。 - **...

    c语言课程设计--职工考勤管理系统.docx

    ### C语言课程设计——职工考勤管理系统知识点梳理 ...2. 谭浩强.C程序设计(第三版).清华大学出版社,2005 以上内容涵盖了职工考勤管理系统的设计思路、实现方法和技术要点,对于初学者来说是一个很好的实践案例。

Global site tag (gtag.js) - Google Analytics