以C语言为基础引入一些关于计算机编程语言的基本知识,许多都是语言之间的共性。
part1基础知识
编译器:source code→machine code(01)
machine code存在.out文件中
CS50在线编译器:CS50 Sandbox
include<>:.h文件头,引用已经写好的代码块
形参实参:
变量类型:int, float, double, char, string,bool……
浮点数不可以比较大小(精度问题)
构造函数:需要在main函数前有函数原型声明
溢出效应:超过max位数后变成0
Y2K事件:Y2K bug | National Geographic Society
后来经过发展,超过范围后进行翻转。
C语言是我接触的第一门编程语言,印象最深的就是对语法的不熟悉导致各种报错,所以教授说最初一定会是frustrating,但是熟悉过后就会好很多。
part2 Arrays
通过键入命令行参数进行编译or自动化编译(make)
-l
表示链接到指定库,如-lm
表示math库
小知识:1.箭头键可以查找历史命令;2.Ctrl+C强行停止程序
编译过程
preprocessing:预处理,将(hash)#……进行特定的替换,如换成函数的声明。
compiling:将源代码转为汇编代码(一种更贴近计算机思维的语言)
assembling:将汇编代码转为机器代码(二进制)
linking:将源代码的机器代码与引用库的机器代码连接起来
debug
原始方法:通过print打印出的临时内容来追踪错误信息
借助工具:debugger调试器
rubber duck debugging:通过交谈说出自己的逻辑(人或物,如玩具),并从中意识到不符合逻辑的地方
数组
计算机内存memory
数组array 在函数间的传递
常量constant
强制转换:涉及浮点数的计算需要至少一个浮点数
字符串
字符数组、\0停止符、引入库string.h
二维数组
int main(int argc, string argv[])
argc表示参数计数
argv表示参数向量:argv[0]默认为文件名,0以后为用户在命令行编译运行时输入的信息
main总是返回int:返回0表示程序正常运行
通过在命令行echo $?
输出返回值
加密
特定的算法
可逆转
part3 算法Algorithms
运行时间 :线性、logn