0%

CS50-1

CS50第一章-C语言

以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