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的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值