一整天想着“塞翁失马”的问题,自己多少有点阴郁。不过还好,每当自己着手技术学习或者是项目看法的时候往往一步步心情就会平复下来。这也是自己为什么拼命要走技术路线的原因。喜欢是肯定的。当然苦也是异于常人的。刚刚看了篇刷了各大offer的微信共享,牛人不缺,缺的是有梦想能坚持的人。不知道自己能走多远,但是,在各种前辈思想的鼓舞下,我想他的期限是一辈子。
今天来整理第7章到第8章。由于7章的结构体往往在c++中会被类所取代,可能在c语言中是重头戏,当年我考研的时候,由于拜读的是大名鼎鼎的严蔚敏严老师的数据结构,所以最后考数据结构的时候,我全是用结构体写的题目,就最后结果来看,还是挺成功的。外加研一在linux下实现了一些题目,其中有多线程,高并发等等,也是用结构体来写的,所以我在此将一些比较容易忘记的,关键的进行记录吧(第7章的内容),其他的我就不上了,包括后面的习题。我将所有数据结构的实现全部移到后面的面向对象的部分,这也是c++这门语言的基石。
Chapter7~Chapter8
->自定义数据类型
1、先上一个结构体的代码:
#include<iostream> using namespace std; struct MyStruct { int num; char name[10]; char sex; int age; float score; char addr[20]; }; MyStruct ms1, ms2; int main(){ return 0; }
2、string类型只存具体字符串的一个入口地址,所以用sizeof来求它的大小是固定的,我在VS下运行是28,这个和具体的编译器实现有关,所以不能一概而论。但是当他包含在结构体或者是类当中,是其中的一个属性,那么他只是string类型的大小,和具体string对象的内容无关,所以整体的结构体的大小不会睡着string的长度增长而增长,推荐使用string。
3、结构体求sizeof的时候,注意内存对齐的问题,VS下面是4字节对齐的。例如:
struct MyStruct { char ch; int a; };
这种结构体的大小是8,虽然char的长度是1,int的长度是4,但是为了4字节对齐原则,这个的大小是8(在char那个地方的后面补齐3字节);注意区分下面两种的对其方式方法:
struct MyStruct { char ch; char cj; int a; };//大小是8 struct MyStruct1{ char ch; int a; char cj; };//大小是12
4、枚举类型的举例:
enum MyEnum
{
a=9,b=1,c,d,e,f
};
MyEnum me=c;
me=(MyEnum)3;//这个的值是d
可以在内部给枚举的常量成员赋值,在最后一个赋值的常量后面的常量,每一个递增1,例如c的值是2,d的值是3,因为是常量,并不能在外部给常量赋值,例如a=4在外面的话就不正确了。
5、typedef的使用:
typedef int Integer;//这个将Integer代替int类型
typedef char *P;//这个是将P设置为char型的指针,以后P a;这种,a就是char指针类型
p.s:这个东西在程序语言中最关键的用处是便于移植,在嵌入式中使用广泛!
->类和对象(这一章节介绍居多,重点的难点都在这一章开始,后面的每一章,所以这一章我也将较为简洁的总结一下。此后,每一章单独写,不再两章合并)
1、类的老掉牙的三大特性:继承、封装、多态。为什么还要在这里提出来,前几天面试京东的时候,在第二面,面试官花了一大篇幅问了我对面向对象的特性的理解,并且他也提出来,他并不想听很课本很理论的东西,他要我说项目之后的心得体会。我着重说了下封装特性,主要基于我研究生做的几个oa系统的开发来说的,其中后台的代码分三层来写:action层,service层,DAO层。其中action层的代码负责controller的角色,负责控制转发或是拦截,service层的代码主要就是进行业务的拼装,将DAO层的返回数据,根据业务的需求,进行组装,达到我们想要的业务逻辑,DAO层的代码主要就是纯的和数据库打交道,代码在这一层进行各种的数据上面的增删改查,所以里面会有很多的sql语句了等等。在service层的业务拼装过程中,我们并不需要关心DAO层的代码具体要怎么的去进行数据库操作的,我们直接来调用即可,并且如果我们要进行DAO层或者是service层的代码改动,只要保证接口一致,并不需要关心到底各层分别作了什么改动,这就是我们软件开发过程当中,如今很流行的解耦和,低耦合。我觉得这个项目体会,应该能很好的说明面向对象的特性。(看面试官还可以,挺满意!)
2、类的权限限制符:
public:共有成员,类外可以访问的;
private:私有成员,只有类内成员可以访问,当然设置为friend的成员也可以访问;
protected:类外不可访问,但是此类的派生类可以访问,当然友元函数(friend)也可以访问。
3、类和结构体的区别:(这个问题,今年的校招我碰到了!)
用struct声明的类,如果对成员不作private或者public的声明,系统将其默认为public;而class定义的类,如果不作这些声明,系统将其成员默认为是private的。
相关推荐
谭浩强版《C++程序设计》课件是对教材内容的一种详细梳理与总结,它覆盖了从C++的基础语法到面向对象编程的核心概念。下面将根据课件的目录,对各章节涉及的关键知识点进行详细的解析。 #### 第1篇 基本知识 **第1...
以上是《谭浩强C++程序设计》第二章中关于数据类型和表达式的详细知识点梳理,涵盖了整型常量、浮点数、字符常量、符号常量、变量定义及初始化、算术运算符等多个方面。通过这些知识点的学习,读者可以更好地理解C++...
### 谭浩强《C++程序设计》内容概览 #### 第1篇 基本知识 第1章 C++的初步知识 - 1.1 从C到C++:介绍了C++语言的发展历程,如何从C语言演化而来。 - 1.2 最简单的C++程序:展示了最基本的C++程序结构。 - 1.3 C++...
### C++程序设计谭浩强版 #### 一、引言 ...通过上述对《C++程序设计谭浩强版》各章节内容的梳理,我们可以看出这本书覆盖了C++编程从基础知识到高级特性的各个方面,非常适合初学者系统学习C++编程。
### 谭浩强C语言程序设计知识点梳理 #### C语言概述 - **发展过程**:C语言由Dennis Ritchie于1972年在贝尔实验室开发完成,最初是为了移植Unix操作系统而设计的。 - **当代最优秀的程序设计语言**:C语言因其简洁...
通过上述知识点的梳理,我们可以看到谭浩强老师编著的《C++程序设计》这本书内容丰富,覆盖了C++语言的基础知识、面向过程的程序设计、面向对象的程序设计等多个方面,适合初学者系统学习C++语言。
- **当代最优秀的程序设计语言**:C语言因其简洁、灵活和强大,被广泛认为是学习编程的基础。它不仅适用于系统级编程(如操作系统和嵌入式系统),也用于应用软件开发。 - **C语言版本**:C语言经历了多个版本的发展...
### C语言程序设计知识点梳理 #### 一、C语言概述 **1.1 C程序结构特点** - **函数**: C程序的基本单位是函数。每个函数都有自己的功能,并且可以独立编译。 - **函数首部**: 包括函数类型、函数名以及参数列表...
《谭浩强C程序设计课件》是一套全面讲解C语言编程基础的教育资源,主要针对第三版的内容进行了详细的梳理和解读。这套课件涵盖了C语言的14个关键章节,旨在帮助初学者深入理解C语言的基本概念、语法结构以及编程技巧...
- **面向对象的程序设计语言**:虽然C语言本身不支持面向对象编程,但其衍生的C++语言支持此类编程范式。 - **C和C++的区别**:C++是基于C语言扩展而成的一种面向对象的编程语言,增加了类、对象等概念。 - **简单的...