学习C语言需要了解编译原理、操作系统、计算机体系机构。
汇编语言和机器语言是一一对应的汇编语言有三条指令,机器语言也有三条指令,汇编器就是做了一个简单的替换工作
1.汇编器 :汇编语言--->机器语言
2编译器: C语言---->汇编语言
“可移植"------“平台无关”“平台”可以指1.计算机体系结构 2.操作系统 3.开发平台(编译器,链接器)
各种体系结构的计算机都有各自的“C编译器” C语言有些语法特性在C标准中并没有明确规定,各编译器有不同的实现,编译出来的指令的行为特性也会不同,应该尽量避免使用不可移植的语法特性。
解释器“/bin/sh”
SQL语言,结构化查询语言更注重要做什么?
臭虫(Bug) 调试(Debug)
1.编译时错误----编译器只能翻译语法正确的程序
2.运行时错误----编译器检查不出这类错误,仍然可以生成可执行文件。“注意区分编译时和运行时(Run-time)这两个概念”
3.逻辑错误和语义错误
“当你把不可能的全部剔除,剩下的——即使看起来再怎么不可能——就一定是事实。”
一个好的习惯是打开gcc的-Wall选项,也就是让gcc提示所有的警告信息,不管是严重的还是不严重的,然后把这些问题从代码中全部消灭。
虽然本书的命令行为了突出重点通常省略-Wall选项,但是强烈建议你写每一个编译命令时都加上-Wall选项。
C代码风格(Coding Style)
/*
* comment1
* main: generate some simple output
*/
好的代码风格要求缩进整齐,每个语句一行,适当留空行。
C语言中的声明(Declaration)有变量声明、函数声明和类型声明三种.
变量声明都是要分配存储空间的,因而都是定义. 变量声明不分配存储空间因而不是定义. 分配存储空间的函数声明可以称为函数定义。 类型声明,声明一个类型是不分配存储空间的。
声明和语句类似,也是以;号结尾的,但是在语法上声明和语句是有区别的,语句只能出现在{}括号中,而声明既可以出现在{}中也可以出现在所有{}之外。
浮点型有三种,float是单精度浮点型,double是双精度浮点型,long double是精度更高的浮点型。
一般来说应避免使用以下划线开头的标识符。
理解一个概念不是把定义背下来就行了,一定要理解它的外延和内涵,也就是什么情况属于这个概念,什么情况不属于这个概念,什么情况虽然属于这个概念但一般推荐的做法(Best Practice)是要尽量避免这种情况,这才算是真正理解了。
变量名,各自代表一块存储空间。变量声明中的类型表明这个变量代表多大的一块存储空间,这样编译器才知道如何读写这块存储空间。
总结一下:定义一个变量,就是分配一块存储空间并给它命名;给一个变量赋值,就是把一个值保存到这块存储空间中。 变量的初始化(Initialization)。 初始化是一种特殊的声明,而不是一种赋值语句。 注意总结赋值和初始化的相同和不同之处。
变量的最小存储单位是字节(Byte),在C语言中char型变量占一个字节。
在C语言中char型占一个字节的存储空间,一个字节通常是8个bit。如果这8个bit按无符号整数来解释,取值范围是0~255,如果按有符号整数来解释,采用2's Complement表示法,取值范围是-128~127。C语言规定了signed和unsigned两个关键字,unsigned char型表示无符号数,signed char型表示有符号数。
运算符(Operator) 操作数(Operand) 表达式(Expression) 组合(Composition) 赋值(Assignment)
任何表达式都有值和类型两个基本属性。
有的表达式既可以表示一个存储位置也可以表示一个值,而有的表达式只能表示值,不能表示存储位置。表达式所表示的存储位置称为左值(lvalue)(允许放在等号左边),而以前我们所说的表达式的值也称为右值(rvalue)(只能放在等号右边)。目前我们学过的表达式中只有变量可以做左值。
向下取整的运算称为Floor,用数学符号??表示;向上取整的运算称为Ceiling,用数学符号??表示。例如:
?59/60?=0
?59/60?=1
?-59/60?=-1
在C语言中整数除法---当操作数为正的时候相当于Floor,当操作符为负的时候相当于Ceiling。
现在我们知道char型本质上就是整数,只不过取值范围比int型小,所以以后我们把char型和int型统称为整数类型(Integer Type)或简称整型。字符'a'~'z'、'A'~'Z'、'0'~'9'的ASCII码都是连续的,因此表达式'a'+25和'z'的值相等,'0'+9和'9'的值也相等。注意'0'~'9'的ASCII码是十六进制的30~39,和整数值0~9是不相等的。字符也可以用ASCII码转义序列表示,这种转义序列由\加上1~3个八进制数字组成,或者由\x或大写\X加上1~2个十六进制数字组成,可以用在字符常量或字符串字面值中。例如'\0'表示NUL字符(Null Character),'\11'或'\x9'表示Tab字符,"\11"或"\x9"表示由Tab字符组成的字符串。注意'0'的ASCII码是48,而'\0'的ASCII码是0,两者是不同的。
例如log(1.0)。在C语言的术语中,1.0是参数(Argument),log是函数(Function),log(1.0)是函数调用(Function Call)。
函数调用也是一种表达式。log(1.0)这个表达式由操作数log和函数调用运算符()括号组成,函数调用运算符是一种后缀运算符,()括号及其中的参数是操作数log的后缀。操作数log是一个函数名(Function Designator),它的类型是一种函数类型(Function Type)。log(1.0)这个表达式的值是对数运算的结果,类型是double型,在C语言中函数调用表达式的值称为函数的返回值(Return Value)。
C语言的函数可以有Side Effect(副作用),这一点是它和数学函数在概念上的根本区别。
头文件通常位于/usr/include目录下。头文件中声明了我们程序中使用的库函数,根据先声明后使用的原则,要使用printf函数必须包含stdio.h,要使用数学函数必须包含math.h。
使用math.h中声明的库函数还有一点特殊之处,gcc命令行必须加-lm选项,因为数学函数位于libm.so库文件中(这些库文件通常位于/lib目录下),-lm选项告诉编译器,我们程序中用到的数学函数要到这个库文件里找。本书用到的大部分库函数(例如printf)位于libc.so库文件中,使用libc.so中的库函数在编译时不需要加-lc选项,当然加了也不算错,因为这个选项是gcc的默认选项。
C标准库和glibc
C标准主要由两部分组成,一部分描述C的语法,另一部分描述C标准库。C标准库定义了一组标准头文件,每个头文件中包含一些相关的函数、变量、类型声明和宏定义。要在一个平台上支持C语言,不仅要实现C编译器,还要实现C标准库,这样的实现才算符合C标准。不符合C标准的实现也是存在的,例如很多单片机的C语言开发工具中只有C编译器而没有完整的C标准库。
在Linux平台上最广泛使用的C函数库是glibc,其中包括C标准库的实现,也包括本书第三部分介绍的所有系统函数。几乎所有C程序都要调用glibc的库函数,所以glibc是Linux平台C程序运行的基础。glibc提供一组头文件和一组库文件,最基本、最常用的C标准库函数和系统函数在libc.so库文件中,几乎所有C程序的运行都依赖于libc.so,有些做数学计算的C程序依赖于libm.so,以后我们还会看到多线程的C程序依赖于libpthread.so。以后我说libc时专指libc.so这个库文件,而说glibc时指的是glibc提供的所有库文件。
glibc并不是Linux平台唯一的基础C函数库,也有人在开发别的C函数库,比如适用于嵌入式系统的uClibc。
给函数命名也要遵循上一章讲过的标识符命名规则。由于我们定义的main函数不带任何参数,参数列表应写成void。函数体可以由若干条语句和声明组成,C89要求所有声明写在所有语句之前(本书的示例代码都遵循这一规定),而C99的新特性允许语句和声明按任意顺序排列,只要每个标识符都遵循先声明后使用的原则就行。main函数的返回值是int型的,return 0;这个语句表示返回值是0,main函数的返回值是返回给操作系统看的,因为main函数是被操作系统调用的,通常程序执行成功就返回0,在执行过程中出错就返回一个非零值。比如我们将main函数中的return语句改为return 4;再执行它,执行结束后可以在Shell中看到它的退出状态(Exit Status)。
$?是Shell中的一个特殊变量,表示上一条命令的退出状态。关于main函数需要注意两点:
1 [K&R]书上的main函数定义写成main(){...}的形式,不写返回值类型也不写参数列表,这是Old Style C的风格。Old Style C规定不写返回值类型就表示返回int型,不写参数列表就表示参数类型和个数没有明确指出。这种宽松的规定使�
没有合适的资源?快使用搜索试试~ 我知道了~
《linux_c一站式学习》-----初学Linux的看这个绝对没问题
共601个文件
html:439个
png:141个
txt:11个
需积分: 6 18 下载量 76 浏览量
2010-08-03
22:23:10
上传
评论
收藏 8.35MB RAR 举报
温馨提示
经典LINUX-C教材、讲的很全面、绝对是你进入Linux天堂的正确垫脚石。
资源推荐
资源详情
资源评论
收起资源包目录
《linux_c一站式学习》-----初学Linux的看这个绝对没问题 (601个子文件)
project.log.bak 189B
akabook-snapshot20090623.tar.bz2 3.55MB
akabook-src20090623.tar.bz2 863KB
styles.css 4KB
Thumbs.db 160KB
pointer.type.gif 6KB
ch25s02.html 80KB
ix01.html 59KB
ch29s02.html 47KB
index.html 35KB
ch37s02.html 33KB
ch25s01.html 32KB
ch33s04.html 31KB
ch18s05.html 31KB
apb.html 29KB
ch20s02.html 29KB
ch20s04.html 29KB
ch24s01.html 29KB
ix01.html 28KB
ch30s03.html 27KB
ch21s02.html 24KB
ch19s03.html 24KB
ch26s01.html 23KB
ch35s03.html 23KB
ch22s01.html 22KB
pr02.html 21KB
ch31s05.html 21KB
ch19s02.html 20KB
ch19s01.html 20KB
ch15s01.html 20KB
ch10s01.html 19KB
ch15s03.html 19KB
ch05s03.html 18KB
ch34s01.html 18KB
ch03s02.html 16KB
ch03s04.html 16KB
ch19s06.html 16KB
ch11s06.html 16KB
index.html 15KB
intro.program.html 15KB
ch07s01.html 15KB
ch29s03.html 15KB
ch20s05.html 15KB
ch16s01.html 15KB
pt02.html 14KB
ch05s02.html 14KB
ch03s03.html 14KB
pt03.html 14KB
ch26s02.html 14KB
ch14s03.html 14KB
ch35s02.html 13KB
ch02s01.html 13KB
ch18s01.html 13KB
expr.expression.html 13KB
ch28s04.html 13KB
ch34s02.html 13KB
ch28s02.html 13KB
bi01.html 13KB
ch36s05.html 13KB
ch36s07.html 13KB
ch22s03.html 13KB
ch30s04.html 12KB
ch19s04.html 12KB
ch23s01.html 12KB
ch10s02.html 12KB
ch11s04.html 12KB
ch05s01.html 12KB
ch33s03.html 12KB
ch10s03.html 12KB
ch32s02.html 12KB
ch28s03.html 11KB
ch08s01.html 11KB
ch03s01.html 11KB
ch12s03.html 11KB
ch31s03.html 11KB
ch08s05.html 11KB
ch16s02.html 11KB
ch06s01.html 11KB
ch16s03.html 11KB
ch22s04.html 11KB
ch04s03.html 11KB
ch08s02.html 11KB
ch23s09.html 11KB
ch24s06.html 11KB
ch20s01.html 10KB
ch11s03.html 10KB
ch09s02.html 10KB
intro.helloworld.html 10KB
ch31s02.html 10KB
ch25.html 10KB
ch24s05.html 10KB
ch21s03.html 10KB
ch07s02.html 10KB
ch09s01.html 10KB
ch31s04.html 10KB
ch20s03.html 10KB
ch37s05.html 10KB
ch28s06.html 10KB
ch37s04.html 10KB
ch21s04.html 10KB
共 601 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
丢丢来
- 粉丝: 209
- 资源: 23
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功