Linux C 编程学习第一天
程序基本概念
C语言是面向过程的语言,而C++是面向对象的语言。
C语言的可移植性,或者称为平台无关,该平台指操作系统(OS)也可以指计算机体系结构(Architecture),也可以指两者的组合,不同的计算机体系结构有不同的指令集,可以识别的机器指令格式是不同的,直接使用汇编或者机器指令写出来的程序,只能在对应体系结构中执行,然而各种体系结构都有各自的C编译器,可以把C编译对应体系的机器指令,所以C语言只需要稍许修改或者不用修改就可以在各种计算机上编译运行。各种高级语言都具有这样的有点,所以大部分程序是使用高级语言编写的, 只有和硬件关系密切的少数程序(如驱动程序)才会使用到低级语言。
编译器读取源代码——编译生成可执行文件——操作系统加载可执行文件——程序运行输出
有些高级语言以解释(Intterpret)的方式执行,解释过程和C语言的编译执行过程很不一样,比如编写一个Shell脚本script.sh:(参考Linux下的shell)
#! /bin/sh (/bin/sh成为解释器,它把脚本中的每一行当作一条命令解释执行)
VAR=1 (定义一个变量为VAR,值为1,shell支持整型)
VAR=$(($VAR+1)) (将VAR+1然后赋值给VAR)
echo $VAR (echo输出)
解释器读取源代码解释执行——程序运行结果出现在屏幕上
思考:
1、解释执行的语言比编译执行的语言有什么优缺点?
自然语言和形式语言
自然语言是自然进化产生的,人类或者动物用于交流的语言,汉语,英语,日语等,形式语言是为了特定应用而人为设计的语言,如数字运算符号,分子式,编程语言也是形式语言,是专门设计用来表达计算过程的形式语言。
形式语言有严格的语法,而语法规则是由符号和结构的规则所组成的,结构是指符号的排列方式,关于符号的规则成为词法规则,关于结构的规则称为语法规则。
现在给出一些关于阅读程序(包括其他形式语言)的建议:
首先请记住形式语言比自然语言紧凑,所以要多花点时间来读,其次,结构很重要,从上到下,从左到右不是一个好办法,应该学会在大脑里解析:识别符号,分析结构,最后千万记住细节的影响,比如拼写错误或者标点符号,这些在形式语言中十分重要。
程序的调试
调试(Debug),先看看bug分类:
编译时错误:类似语法错误,拼写错误等
运行时错误:编译器可以生成执行文件,但是运行会出错导致崩溃,以后再学习中要时刻注意区分编译时和运行时(Run-time)两个概念,不仅在调试时需要区分这两个概念,学习很多语法时都要注意区分,有些事情编译时做,有些事情则运行时做
逻辑错误和语义错误:你写的程序不是你想要的
还记得在Linux下怎么写一个简单的hello world吗?
vi main.c
进入vi编辑器,开始编写如下代码:
将这个程序保存,然后编译
生成了a.out这个可执行文件
强烈建议在每一个编译命令上都加上-Wall选项
gcc -Wall main.c