您的位置:首页 > 其它

C all

2015-09-18 11:09 176 查看
程序最终的目的是解决问题。语言:一切都是数据和指令。

命令行界面是最终的,GUI不过是调用命令行的。

第三代交互方式:自然交互界面。

input - CPU process(运算器,控制器)-output。存储器。外部设备。

0101二进制。计算机原理,网络,算法结构,

机器指令格式:操作码,操作数。程序不过是指令序列。

汇编语言。编译器:翻译器。文本转换。

语言进化史:asm,c,oc/c++,java/php/python.

学会C/C++,走遍全球都不怕。永不过时的贵族语言。

20年后还会存在C/C++,Java. IOS已是巅峰。

C语言未来用武之地:云计算,物联网,移动互联网。

上层应用只是调用API而已。

qianli wuxian.顽强的毅力可以征服世界上任何一座高峰

///////////////

system(“notepad”);

system(“pause”);

乌班图ubuntu,服务器都是Linux.BAT

Linux:五年不关机,Unix:五十年不关机(取款机后台)。

xCode,VS, VIM. 跨平台:QT,Eclipse,Code Blocks.

内存空间-存放指令或者数据

变量如果不初始化,可以编译成功,但是执行的时候,很可能报错 。

当操作系统回收的时候,并不清空内存单元,所以存在大量的垃圾数据。

如果变量不初始化,就会默认读取垃圾数据, 有些垃圾数据会导致程序崩溃。

所以,变量使用之前,必须初始化。

#define Pai 3.14159;

const float pai 3.14159;

sizeof是个单目运算符,用来计算操作数在内存中占据的字节数.char

所谓“声明”,就是告诉编译器有这么一个东西。

不同的数据类型有不同的操作,不同的内存大小。

内存分段管理:常量区,变量区,代码区。

如何更好更有效率的使用变量,是一门专门的学科——数据结构。

程序:为解决某一问题而设计的一系列有序指令的集合。

if(){} else if(){} else if(){} else{};

switch(c){case ‘A’: case ‘B’: break;

}

std:标准,跨平台。

C5个基本数据类型: void, int, float, double, 和 char.

asm {

instruction-sequence

}

计算机本质上是由数字电子电路组成的运算机器,所有的运算都只能通过数字来表示和处理。通过将各种数据转换为数字表示,可以使计算机处理各种信息,比如音乐、图片、电影等。

输入类指令:用于从键盘、文件或者其它设备获取数据。

输出类指令:用于把数据显示到屏幕,或者存入一个文件,或者发送到其它设备,比如打印机。

基本运算类指令:用于执行最基本的数学运算(加减乘除)和数据存取.

测试和分支类指令:用于判断某个条件是否成立,然后根据不同的结果执行不同的后续指令。

循环类指令:用于重复执行一系列操作。

对于程序来说,有上面这几类指令就足够了。

形参变量是属于被调函数的局部变量,实参变量是属于主调函数的局部变量。

long factorial(int n){

if(n== 1 || n == 0 ){

return 1;

}else{

return factorial(n - 1) * n;

}

}

//C——————-

for,do while,goto.

基本数据类型,复合数据类型,结构体。

struct stu{

int num;

char name[40];

char sex;

float score;

}boy1, boy2;

结构体类型与结构体变量概念不同:

类型:不分配内存;变量:分配内存

结构体与数据抽象。

大多数的计算机运算是对现实世界的模拟。

数组:

int a[10] = {1,2,3};//others:0

字符串,指针:类型不同,支持的操作不同(+-*/%);

字符串总是以’\0’作为串的结束符。

strcpy ,strcmp,strcat,memset,memcpy.

emset(buffer,’*’,strlen(buf));

strlen:测字符串的实际长度(不含字符串结束标志‘\0’) 并作为函数返回值。

F5: 开始调试

F10: 调试到下一句,这里是单步跟踪

F11: 调试到下一句,跟进函数内部

Shift+F11: 从当前函数中跳出

Ctrl+F10: 调试到光标所在位置

F9: 设置(取消)断点

本质:硬件,加法器电路,与或非门。

指针:存储的是地址。以地址为值的变量就是指针变量,简称指针。

. 指针的类型是derived from其它类型,也就是说指针的类型是由它指向的类型决定的;

. 指针是一种reference类型,即引用类型;

所有指针占的存储一样大,因为它们的值都是地址,通常用一个机器字表示。

strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个’\0’,如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到’\0’停止。

若char aa[10]; 则strlen(aa)结果是不定的

若char aa[10]={‘\0’}; 则strlen(aa)则结果为0

若char aa[10]=”jun”; 则strlen(aa)则结果为3

而sizeof()返回的是变量声明后所占的内存数,不是实际长度,此外sizeof不是函数,仅仅是一个操作符,strlen是函数。

sizeof(aa) 返回10

int a[10]; sizeof(a) 返回40

文件:普通文件,设备文件(打印机,显示器,键盘)。FILE *fp;

动态分配一块内存:malloc/free.数组大小是静态的,不变的。

内存四区:常量区,代码区,堆(new),栈(自动变量和函数信息)。

Vector,List,Map.

函数栈:push ebp;push 2;push 0; …

一般来说,标准的输出和输入设备通常指的是显示器和键盘,在支持重定向的操作系统中,标准输入输出能被替换

不论是传值调用还是传址调用,编译器都要为每个参数制作临时副本,或称拷贝,函数体中对参数的修改都是对副本的修改

如果要细分,函数返回也可以认为存在传值和传址两种方式。函数返回同样也是根据副本机制来处理的,首先来回顾下函数返回的流程:

当执行到return语句时,return的值被复制到某个内存单元或寄存器中,其地址是由编译器来维护的,

程序员无法直接访问该地址,也就是说,在函数执行完毕,相关现场被撤销前,

返回的值被复制保存到了某个地方,编译器访问该位置即可知道函数的返回值。

该位置即可看成是函数中返回值的副本。

25.

struct Student

{ int num;

  float score;

  struct Student *next;

}a,b,c;

1.ref, int i = &j;const,

auto decltype,nullptr,for(i:arr),lambda.

string,vector,*this,friend,

C++标准库,容器,泛型算法,拷贝控制(三原则)

OOP,模板与泛型编程,异常处理和名字空间。

2. c++ primer

托管代码是一种中间语言,运行在CLR上(独立兼容);

非托管代码被编译为机器码,运行在机器上。

3. STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器).

C++中的虚函数的作用主要是实现了多态的机制。

关于多态,简而言之就是用父类型别的指针指向其子类的实例,

然后通过父类的指针调用实际子类的成员函数。

这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。

所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。

4. 虚函数表(Virtual Table)解决了继承、覆盖的问题.

所以,我个人认为以后的趋势是前端是Web+移动,后端是Linux+开源。开发这边基本上没Windows什么事。

阻塞(同步IO),非阻塞(异步IO),多路复用(select, poll, epoll)的IO技术。

深入浅出设计模式 其实Unix很简单

对于程序员来说Unix/Linux比Windows简单多了。我觉得GUI确实不那么热门了

5. TCP/IP协议:物理层,网络层,传输层,应用层。

以太网报头,IP报头,TCP报头。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: