c回炉重造

好久没写代码了,打算重新对C进行学习,把自己忘记的一些点记录一下, 应该会有一些新的理解和认识。

写在最前面

编译器是将高级语言程序翻译成计算机能理解的机器语言指令集的程序。使用合适的编译器或者编译器集,便可以把一种高级语言程序转换成供各种不同类型CPU使用的机器语言程序。

编程机制:c编程的基本策略是,用程序将源代码文件转换成可执行文件(其中包含可直接运行的机器语言代码)。典型的c实现通过编译链接两个步骤来完成这一步的。编译器把源代码转换成中间代码,链接器把中间代码和其他代码合并,生成可执行文件。

中间文件有多种形式,最普遍的一种形式是将源代码转换成机器语言代码,并将结果放在目标代码文件中,目标代码文件虽然包含机器语言代码,但是不能直接运行该文件,因为目标文件中存储的是编译器翻译的源代码,还不是一个完整的程序。

目标文件代码缺少启动代码。启动代码充当程序和操作系统之间的接口。目标代码还缺少库函数。链接器的作用是,将编写的目标代码、系统的标准启动代码和可代码这三部分文件合并成一个文件,即可执行文件。


字符串

char类型用于存储字符,但是实际上存储的是整数(例如ASCII码)而不是字符

c语言把1字节定义为char类型占用的位数(bits)

用单引号括起来的单个字符被称为字符常量,双引号括起来的被认为是字符串

c语言没有专门用于存储字符串的变量类型,字符串被存储在char类型的数组中。

c语言中所有的非零值都视为真


ios646.h

and = &;or=||;not=!

ctype.h

issapce()、isalpha()……

getchar()和putchar()读取文件检测到文件结尾时将会返回一个特殊的值,即EOF=-1


字符输入/输出

重定向输入:

1
echo_eof < words

<是Unix和Dos/Windows的重定向运算符,该运算符使words文件与stdin流关联,把文件中的内容导入echo_eof程序。echo_eof程序本身并不知道(或不关心)输入的内容来自文件还是键盘,它只知道这是需要导入的字符流

重定向输入

1
echo_eof > mywords

将echo_eof的输出重定向到mywords文件中

混合使用getchar()和putchar(),如果在调用getchar()之前,scanf()在输入行留下一个换行符,会导致一些问题。


函数

指针是一个值为内存地址的变量

1
2
3
int * pi;
char * pc;
float * pf;

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!