Linux环境编程4Linux-C语言编程基础课件.ppt
《Linux环境编程4Linux-C语言编程基础课件.ppt》由会员分享,可在线阅读,更多相关《Linux环境编程4Linux-C语言编程基础课件.ppt(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第4章Linux C语言编程基础1第一个C程序l编译选项-E仅进行预处理,不进行其他操作。助于发现宏错误。-S编译到汇编语言,不进行其他操作。-c编译、汇编到目标代码,不进行链接-Wall尽可能多地显示警告信息。-Werror将所有的警告当作错误处理。-g在可执行文件中包含标准调试信息。-I设置头文件的路径,可以设置多个,默认路径“/usr/include”。-L 设置库文件的路径,可以设置多个,默认路径“/usr/lib”。-l设定编译所需的库名称,如果一个库的文件名为“libxxx.so”那么它的库名称为“xxx”。jianglinmeiubuntu:/c$gcc-o p.c-E firs
2、t.cjianglinmeiubuntu:/c$cat p.c#1 first.c#1#1#1 first.c#1/usr/include/stdio.h 1 3 4extern void funlockfile(FILE*_stream)_attribute_(_nothrow_);#936/usr/include/stdio.h 3 4#2 first.c 2int main(void)printf(Hello world!n);jianglinmeiubuntu:/c$gcc-S first.cjianglinmeiubuntu:/c$cat first.s.file first.c .
3、section .rodata.LC0:.string Hello world!.text .globl main .type main,functionmain:.LFE0:.size main,.-main .ident GCC:(Ubuntu/Linaro 4.6.1-9ubuntu3)4.6.1 .section .note.GNU-stack,progbitsjianglinmeiubuntu:/c$gcc-c first.cjianglinmeiubuntu:/c$ls-l first.o-rw-rw-r-1 jianglinmei jianglinmei 1028 10月 1 2
4、3:47 first.ojianglinmeiubuntu:/c$gcc-Wall-o first first.cfirst.c:In function main:first.c:6:1:warning:control reaches end of non-void function-Wreturn-typejianglinmeiubuntu:/c$rm firstjianglinmeiubuntu:/c$ls1.txt first.c first.o first.s p.cjianglinmeiubuntu:/c$gcc-Werror-Wall-o first first.cfirst.c:
5、In function main:first.c:6:1:error:control reaches end of non-void function-Werror=return-typecc1:all warnings being treated as errorsjianglinmeiubuntu:/c$ls1.txt first.c first.o first.s p.cjianglinmeiubuntu:/c$ll first-rwxrwxr-x 1 jianglinmei jianglinmei 7159 2013-04-17 08:58 first*jianglinmeiubunt
6、u:/c$gcc-g-o first first.cjianglinmeiubuntu:/c$ll first-rwxrwxr-x 1 jianglinmei jianglinmei 8043 2013-04-17 09:03 first*jianglinmeiubuntu:$gcc-I/usr/include/gtk-2.0/-c-o test.o test.cjianglinmeiubuntu:$gcc-L/usr/lib/i386-linux-gnu/-lX11-o test test.c4.1 gcc编译器4选项选项含含义义-help显示命令帮助说明-version显示编译器版本信息-
7、o 指定输出文件名,缺省设置为“a.out”。-D MACRO定义宏MACRO。-E仅进行预处理,不进行其他操作。-S编译到汇编语言,不进行其他操作。-c编译、汇编到目标代码,不进行链接-g在可执行文件中包含标准调试信息。-Wall尽可能多地显示警告信息。-Werror将所有的警告当作错误处理。-w禁止所有警告。-ansi采用标准的ANSI C进行编译。-l library设定编译所需的库名称,如果一个库的文件名为“libxxx.so”那么它的库名称为“xxx”。-I path设置头文件的路径,可以设置多个,默认路径“/usr/include”。-L path设置库文件的路径,可以设置多个,默
8、认路径“/usr/lib”。-static使用静态链接,编译后可执行程序不依赖于库文件。-O N优化编译,主要提高可执行程序得运行速度,N可取值为1、2、3。-Q显示各个阶段的执行时间。4.1 gcc编译器54.2 Eclipse CDT安装和启动l在Unbutu12.04环境下的安装方法jianglinmeiubuntu:$sudo apt-get updatejianglinmeiubuntu:$sudo apt-get upgradejianglinmeiubuntu:$sudo apt-get install eclipse-cdtl启动64.2 Eclipse CDT安装和启动l启动
9、初次启动时会要求用户设置工作空间(workspace)的位置。工作空间是Eclipse中软件项目的所有文件所存放的目录,工作空间同时也是Eclipse进行资源管理的一个环境。74.2 Eclipse CDT安装和启动l启动 主界面包含4个窗格。84.2 Eclipse CDT创建项目并运行lFile-New-Project94.2 Eclipse CDT创建项目并运行l项目设置104.2 Eclipse CDT创建项目并运行114.2 Eclipse CDT创建项目并运行l给项目添加源程序文件。lFile-New-Source File124.2 Eclipse CDT创建项目并运行l源代码编
10、辑器中编写代码134.2 Eclipse CDT创建项目并运行lBuild()144.2 Eclipse CDT创建项目并运行l在 IDE中运行()l在终端上运行jianglinmeiubuntu:$cd workspace/HelloWorld/Debug/jianglinmeiubuntu:/workspace/HelloWorld/Debug$lsHelloWorld hw.d hw.o makefile objects.mk sources.mk subdir.mkjianglinmeiubuntu:/workspace/HelloWorld/Debug$./HelloWorld He
11、llo world!154.2 Eclipse CDT程序调试l基本调试方法断点单步查看变量调用栈查看内存查看寄存器反汇编l显示行号Window-PreferencesGeneral-Editors-TextEditors164.2 Eclipse CDT程序调试l编辑hw.c#include void pr()printf(Hello world!n);int sum(int a,int b)int c=a+b;return c;int main()int s;pr();s=sum(2,5);printf(The sum of 2 and 5 is:%d,s);return 0;l运行l设置
12、断点l调试()l单步(F6)l继续运行(F8)174.3 C语言基础C语言概述l既可以编写系统软件,也可以编写应用软件。lDennis M Ritchie为开发UNIX操作系统的方便而设计出来的。l大多数操作系统的内核的大部分内容都是用C语言编写的。l优点语言简洁、紧凑、灵活(32个关键字,9种控制语句)。运算符丰富(34种),表达式类型多样、灵活、简练。数据结构丰富、合理,能够方便地实现链表、树、栈、队列和图等各种复杂的结构。具有结构化的控制语句,符合现代编程风格。兼有高级语言和低级语言的特点。可移植性好。目标代码质量高,程序执行效率高。语法限制不太严格,程序设计自由度大。184.3 C语言
13、基础数据类型l“数据结构+算法=程序”(Niklaus Wirth)l数据类型决定了数据可参与的运算、所表示的数的范围和所占用的内存大小。l数据类型所占用的内存大小因平台而异(以32位Linux为例)。194.3 C语言基础数据类型l常量与变量在程序运行过程中,其值不可改变的量称为常量;反之,其值可以改变的量称为变量。常量可分为直接常量和符号常量。l直接常量从其字面形式即可判别,如2、1.23456、A等。l符号常量用一个标识符来代表一个固定不变的量,其优点是使得的程序的可读性更好。l符号常量定义:#define 常量名 常量值例:#define PI 3.1415926变量定义:数据类型 变
14、量名lint a;/*定义整型变量a*/lfloat b;/*定义浮点型变量b*/变量应“先定义,后使用”。204.3 C语言基础数据类型l整型可细分为基本型(int)、短整型(short)、长整型(long)和无符号型。基本型占4个字节、短整型占2个字节、长整型占8个字节;它们各有对应的无符号型:unsigned int、unsigned short和unsigned long。无符号型数据的最高位不用作符号位。整型常量l三种表示形式十进制整数。由数字09和正负号表示,如:123,-456,0。八进制整数。由数字0开头,后跟数字07表示,如:0123,011。十六进制整数。由0 x或0X开头
15、,后跟09,af,AF表示,如:0 x123,0Xff。l整型常量默认为int型。若其值所在范围确定超出了int的表示范围,则其类型为long型。如:123是int型,0 x123456789是long型。l也可以在整常量后加上字母l或L,指明它是long型,如:1234L。214.3 C语言基础数据类型l整型整型变量l定义:整型数据类型 变量名l整型数据为类型可以为:int、long、short。并且可以在这三个关键字前加上关键字signed和unsigned指明是有符号还是无符号。默认为有符号整型。l例:int x,y;/*定义x,y为整型变量*/unsigned short m,n;/*
16、定义m,n为无符号短整型变量*/long a;/*定义a为长整型变量*/224.3 C语言基础数据类型l浮点型可分为单精度浮点型(float)和双精度浮点型(double)。单精度浮点型占4个字节和双精度浮点型占8个字节。浮点型常量l两种表示形式十进制整数。由整数部分、小数点和小数部分组成,如:1.24、0.345、.222、234.0、333.、0.0等。指数形式。形如e,如:1.23E2、314.15E-2、0E3等。E之后的整数表示的是10的几次方。l浮点型常量默认为double型,可以在浮点型常量后加上字母f或F,指明它是float 型,如:1.234F。浮点型变量l定义:double
17、 变量名 或 float变量名l例:double x,y;/*定义x,y为双精度浮点型变量*/float m,n;/*定义m,n为单精度浮点型变量*/234.3 C语言基础数据类型l字符型可分为char和unsigned char两种,均占1个字节。字符型数据可视为一个整数。字符型常量l用单引号括起来的单个普通字符或转义字符。普通字符如:A、a、8等,转义字符以反斜线()后面跟一个字符或一个代码值表示。转义转义字符字符含含义义转义转义字符字符含含义义n换行t水平制表符v垂直制表符b退格r回车f走纸换页a响铃反斜线单引号”双引号ddd3位8进制数ddd代表的字符xhh2位16进制数hh代表的字符
18、244.3 C语言基础数据类型l字符型字符串常量l用双引号括起来的字符序列,如:”abcd”。l序列末尾隐含了一个空字符0(ASCII值为0)。故,字符串”a”实际包含了两个字符a和0,占用两个字节。字符型变量l定义:char 变量名l例:char d;/*定义d为字符型变量*/程序示例254.3 C语言基础数据类型l字符型程序示例Program 4-4:ex_char.c 1#include 2 3 int main()4 5 char c1,c2;6 7 c1=65;8 c2=a;9 10 /*printf()是一个标准库函数,用以格式化输出数据*/11 /*其中的%d表示以十进制数值的形
19、式输出变量值,*/12 /*%c表示以字符形式输出变量值*/13 printf(0101tC1tC1-ASCIIn);/*t为转义字符*/14 printf(101t%ct%dn,c1,c1);/*101为以八进制表示的转义字符A*/15 printf(0X61tC2tC2-ASCIIn);16 printf(x61t%ct%dn,c2,c2);/*x61为以十六进制表示的转义字符a*/17 18 return 0;19 jianglinmeiubuntu:/c$gcc-o ex_char ex_char.cjianglinmeiubuntu:/c$./ex_char0101 C1 C1-AS
20、CIIA A 650X61 C2 C2-ASCIIa a 97264.3 C语言基础数据类型l布尔型布尔型只有“真”和“假”两个值,C语言使用整数1表示“真”,使用整数0表示“假”。在进行逻辑判断时,C语言将任何非零值都认为是“真”,而将零值认为是“假”。例:lprintf(%dn,3 2);/*结果为 1*/lprintf(%dn,3 2 1);/*结果为 0*/lprintf(%dn,3&2);/*结果为 1*/lprintf(%dn,3&0);/*结果为 0*/274.3 C语言基础数据类型l枚举型枚举类型变量的取值范围只限于所列举出来的值。使用enum关键字定义:l例:enum wee
21、k sun,mon,tue,wed,thu,fri,sat;说明l花括号中以逗号分隔的标识符称为枚举元素,枚举元素也称枚举常量,具有固定的整数值。l右花括号后的“;”是必不可少的语法组成部分。l默认情况下,第一个枚举元素的值为0,其它枚举元素的值是其前一个元素的值加1后得到的值。l也可以在枚举元素后用“=”为其指定一个值,例如:enum week mon=1,tue,wed,thu,fri,sat,sun=0;定义枚举变量l如:enum week weekday;使用枚举变量l如:weekday=wed;284.3 C语言基础数据类型l数组由n(n 1)个具有相同数据类型的数据元素a0、a1、
22、an-1构成的一个有序序列(集合)。标记数组元素的下标个数决定了数组的维数。数组的所有元素存储在一块地址连续的内存单元中,最低地址对应首元素,最高地址对应末元素。一维数组l定义:数据类型 数组名整型常量表达式;如:int a5;l初始化:用一对花括号括起以逗号分隔的元素。如:int a5=0,1,2,3,4;如果花括号中值的个数少于数组的长度(部分初始化),则后面无对应值的元素的初值为一个随机数,但如果是静态数组,则后面无对应值的元素的初值为0。如:static int a5=0,1,2;294.3 C语言基础数据类型l数组一维数组l引用:只能逐个引用数组元素,而不能一次引用数组的所有元素。s
23、tatic int a3=7,8,9;/*输出a0=7 a1=8 a2=9*/printf(a0=%d a1=%d a2=%dn,a0,a1,a2);printf(a=%d n,a);/*错误*/304.3 C语言基础数据类型l数组二维数组l定义:数据类型 数组名整型常量表达式 整型常量表达式;如:int a23;l初始化:使用两层花括号括起以逗号分隔的元素,内层的每对花括号对应一行。如:int a23=0,1,2,3,4,5;也可以只用一对花括号为二维数组赋初值,按元素的排列顺序(行序优先)依次为各元素赋初值。二维数组也可以部分初始化。如:int a23=0,1,2,3;l引用只能逐个引用二
24、维数组的各个元素static int a1 2=6,7;/*输出a00=6 a01=7*/printf(a00=%d a01=%d n,a00,a01);314.3 C语言基础数据类型l数组字符数组l定义:char 数组名整型常量表达式;如:char str5;l初始化:逐个初始化,如:char str5=H,e,l,l,o;用字符串常量为字符数组初始化,如:char str6=Hello;l引用可以逐个引用字符数组的各个元素,也可以以字符串的形式一次引用字符数组的所有元素。char str3=H,i,0;printf(str=%c%cn,str0,str1);/*输出str=Hi*/prin
25、tf(str=%sn,str);/*输出str=Hi*/324.3 C语言基础数据类型l指针一个变量在内存中的地址就称为该变量的“指针”。一级指针l指针变量的定义指针变量是用来存放另一个变量的“地址”的变量,当一个指针变量p所存放的内容是另一个变量a的地址时,称变量p“指向”变量a。定义:数据类型*指针变量名;如:int*p;l指针变量的赋值建议总是将指针变量初始化为空值NULL对指针变量进行赋值只有三种情况是合法的。一是赋NULL值,二是赋同类型变量的地址,三是赋同类型指针。int a,*p=NULL,*q=NULL,*r=NULL;/*定义整型变量a和三个整型指针*/p=&a;/*给指针p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 环境 编程 语言 基础 课件
限制150内