linux详细入门教程(七)------linux C语言编程基础(1)

目录

一、gcc编译器

         1、第一个c程序

 二、Eclipse  CDT

                1、安装何启动

 三、c语言基础

1、C语言概述

2、数据类型 


一、gcc编译器

Linux 系统下的标准 C 编译器。名字取自 “ GNU C Compiler”
C 语言编程流程

         1、第一个c程序

                代码

 编译 & 运行

 

编译选项

-E  仅进行预处理,不进行其他操作。助于发现宏错误。
-S  编译到汇编语言,不进行其他操作。
-c  编译、汇编到目标代码,不进行链接
-Wall  尽可能多地显示警告信息。
- Werror  将所有的警告当作错误处理。
-g  在可执行文件中包含标准调试信息。
-I  设置头文件的路径,可以设置多个,默认路径 / usr /include
-L   设置库文件的路径,可以设置多个,默认路径 / usr /lib
-l  设定编译所需的库名称,如果一个库的文件名为“ libxxx.so” 那么  它的库名称为“ xxx”

 

 

 

 

 

 

 

 

选项

含义

--help

显示命令帮助说明

--version

显示编译器版本信息

-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

设置库文件的路径,可以设置多个,默认路径/usr/lib

-static

使用静态链接,编译后可执行程序不依赖于库文件。

-O N

优化编译,主要提高可执行程序得运行速度,N可取值为123

-Q

显示各个阶段的执行时间。

 二、Eclipse  CDT

                1、安装何启动

Unbutu12.04 环境下的安装方法

 

 

初次启动时会要求用户设置工作空间( workspace )的位置。
工作空间是 Eclipse 中软件项目的所有文件所存放的目录,工作空间同时也是 Eclipse 进行资源管理的一个环境

        

 主界面包含4个窗格。

 创建项目并运行

File -> New -> Project

 项目设置

 

 

 

给项目添加源程序文件。
File -> New -> Source File

        源代码编辑器中编写代码

 Build 

 

 

 

 在终端上运行

 

程序调试
基本调试方法
断点
单步
查看变量
调用栈
查看内存
查看寄存器
反汇编
显示行号
Window -> Preferences

                        General ->  

 编辑hw.c

运行

设置断点

调试

单步(f6)

继续运行(f8)

 

 三、c语言基础

1、C语言概述

既可以编写系统软件,也可以编写应用软件。
Dennis M Ritchie 为开发 UNIX 操作系统的方便而设计出来的。
大多数操作系统的内核的大部分内容都是用 C 语言编写的。
优点
语言简洁、紧凑、灵活( 32 个关键字, 9 种控制语句)。
运算符丰富( 34 种),表达式类型多样、灵活、简练。
数据结构丰富、合理,能够方便地实现链表、树、栈、队列和图等各种复杂的结构。
具有结构化的控制语句,符合现代编程风格。
兼有高级语言和低级语言的特点。
可移植性好。
目标代码质量高 , 程序执行效率高。
语法限制不太严格 , 程序设计自由度大。

2、数据类型 

数据结构 + 算法 = 程序 Niklaus Wirth
数据类型决定了数据可参与的运算、所表示的数的范围和所占用的内存大小。
数据类型所占用的内存大小因平台而异(以 32 Linux 为例)。

 

常量与变量
在程序运行过程中,其值不可改变的量称为常量;反之,其值可以改变的量称为量。
常量可分为直接常量和符号常量。
直接常量从其字面形式即可判别 , 2 1.23456 A 等。
符号常量用一个标识符来代表一个固定不变的量,其优点是使得的程序的可读性更好。
符号常量定义: #define 常量名  常量值
¡ 例: #define PI 3.1415926
变量定义: 数据类型   变量名
             int a;  /* 定义整型变量 a */
float b;  /* 定义浮点型变量 b */

                        变量应“先定义,后使用”

整型
可细分为基本型( int )、短整型( short )、长整型( long )和无符号型。
基本型占 4 个字节、短整型占 2 个字节、长整型占 8 个字节 ; 它们各有对应的无符号型: unsigned int unsigned short unsigned long
无符号型数据的最高位不用作符号位。
整型常量
三种表示形式
十进制整数。由数字 0~9 和正负号表示,如: 123 -456 0
八进制整数。由数字 0 开头,后跟数字 0~7 表示,如: 0123 011
十六进制整数。由 0x 0X 开头,后跟 0~9 a~f A~F 表示,如: 0x123,0Xff
整型常量默认为 int 型。若其值所在范围确定超出了 int 的表示范围,则其类型为 long 型。如: 123 int 型, 0x123456789 long 型。
也可以在整常量后加上字母 l L ,指明它是 long 型,如: 1234L
整型变量
定义: 整型数据类型 变量名
整型数据为类型可以为:int long short 。并且可以在这三个关键字前加上关键字 signed unsigned 指明是有符号还是无符号。默认为有符号整型。
例:
int x, y;                   /*定义 x, y 为整型变量* /
unsigned short m, n;     /*定义 m, n 为无符号短整型变量* /
long a;                     /*定义 a 为长整型变量* /

 

 

浮点型

可分为单精度浮点型( float )和双精度浮点型( double )。单精度浮点型占 4 个字节和双精度浮点型占 8 个字节。
浮点型常量
两种表示形式
十进制整数。由整数部分、小数点和小数部分组成,如: 1.24 0.345 .222 234.0 333. 0.0 等。
指数形式。形如 < 实数部分 >e< 指数部分 > ,如: 1.23E2 314.15E-2 0E3 等。 E 之后的整数表示的是 10 的几次方。
浮点型常量默认为 double 型,可以在浮点型常量后加上字母 f F ,指明它是 float 型,如: 1.234F
浮点型变量
定义: double 变量名     或    float 变量名
例:
double x, y;         /* 定义 x, y 为双精度浮点型变量* /
float m, n;           /* 定义 m, n 为单精度浮点型变量* /

 

字符型
可分为 char unsigned char 两种,均占 1 个字节。字符型数据可视为一个整数。
字符型常量
用单引号括起来的单个普通字符或转义字符。普通字符如 : A a 8 等,转义字符以反斜线 ( \ ) 后面跟一个字符或一个代码值表示。

转义字符

含义

转义字符

含义

\n

换行

\t

水平制表符

\v

垂直制表符

\b

退格

\r

回车

\f

走纸换页

\a

响铃

\\

反斜线

\

单引号

\

双引号

\ddd

38进制数ddd代表的字符

\xhh

216进制数hh代表的字符

 

字符串常量
用双引号括起来的字符序列,如: abcd
序列末尾隐含了一个空字符 \0 ASCII 值为 0 )。故,字符串 a 实际包含了两个字符 a \0 ,占用两个字节。
字符型变量
定义: char 变量名
例:   char d;    /* 定义 d 为字符型变量* /
程序示例

 

 

 

布尔型
布尔型只有 两个值, C 语言使用整数 1 表示 ,使用整数 0 表示
在进行逻辑判断时, C 语言将任何非零值都认为是 ,而将零值认为是
例:
printf ("%d\n", 3 > 2);      /* 结果为 1 */
printf ("%d\n", 3 > 2 > 1);   /* 结果为 0 */
printf ("%d\n", 3 && 2);    /* 结果为 1 */
printf ("%d\n", 3 && 0);    /* 结果为 0 */

 

枚举型
枚举类型变量的取值范围只限于所列举出来的值。
使用 enum 关键字定义 :
例: enum week {sun, mon , tue , wed, thu , fri , sat};
说明
花括号中以逗号分隔的标识符称为枚举元素,枚举元素也称枚举常量,具有固定的整数值。
右花括号后的 ; 是必不可少的语法组成部分。
默认情况下,第一个枚举元素的值为 0 ,其它枚举元素的值是其前一个元素的值加 1 后得到的值。
也可以在枚举元素后用 = 为其指定一个值,例如:
enum week { mon =1, tue , wed, thu , fri , sat, sun=0};
定义枚举变量
如:  enum week weekday;
使用枚举变量
如:  weekday = wed;

 

数组
n n ≥ 1 )个具有相同数据类型的数据元素 a 0 a 1 a n-1 构成的一个有序序列(集合)。
标记数组元素的下标个数决定了数组的维数。
数组的所有元素存储在一块地址连续的内存单元中,最低地址对应首元素,最高地址对应末元素。
一维数组
定义: 数据类型 数组名 [ 整型常量表达式 ];
如: int a[5];
初始化:用一对花括号括起以逗号分隔的元素。
如: int a[5] = {0, 1, 2, 3, 4};
如果花括号中值的个数少于数组的长度(部分初始化),则后面无对应值的元素的初值为一个随机数,但如果是静态数组,则后面无对应值的元素的初值为 0
如: static int a[5] = {0, 1, 2};

 

一维数组
引用:只能逐个引用数组元素,而不能一次引用数组的所有元素。

 

二维数组
定义: 数据类型 数组名 [ 整型常量表达式 ] [ 整型常量表达式 ];
如: int a[2][3];
初始化:
使用两层花括号括起以逗号分隔的元素,内层的每对花括号对应一行。如: int a[2][3] = {{0, 1}, {2, 3}, {4, 5}};
也可以只用一对花括号为二维数组赋初值,按元素的排列顺序(行序优先)依次为各元素赋初值。
二维数组也可以部分初始化。如: int a[2][3] = {0, 1, 2, 3};
引用
只能逐个引用二维数组的各个元素

 

 

字符数组
定义: char 数组名[整型常量表达式] ;
如: char str[5];
初始化:
逐个初始化 ,如: char str[5] = {'H', 'e', 'l', 'l', 'o'};
用字符串常量为字符数组初始化,如: char str[6] = "Hello";
引用
可以逐个引用字符数组的各个元素,也可以以字符串的形式一次引用字符数组的所有元素。

 

 

指针
一个变量在内存中的地址就称为该变量的 指针
一级指针
指针变量的定义
指针变量是用来存放另一个变量的 地址 的变量,当一个指针变量 p 所存放的内容是另一个变量 a 的地址时,称变量 p 指向 变量 a
定义: 数据类型 *指针变量名 如: int *p;
指针变量的赋值
建议总是将指针变量初始化为空值 —— NULL
对指针变量进行赋值只有三种情况是合法的。一是赋 NULL 值,二是赋同类型变量的地址,三是赋同类型指针。

 

 

一级指针
指针变量的引用
使用 * 操作符(定义指针时用的 * 不是指针引用,而是指针变量的说明符)
引用指针变量所指向的目标的内容。
引用指针变量之前应当确保它指向了一个有效的地址单元。

 

 

二级指针
二级指针变量的定义
指针变量是用来存放另一个变量的 地址 的变量,当一个指针变量 p 所存放的内容是另一个变量 a 的地址时,称变量 p 指向 变量 a
定义: 数据类型 **指针变量名 如: int **pp;
二级指针变量的赋值
也只有三种情况是合法的。一是赋 NULL 值,二是赋同类型的一级指针变量的地址,三是赋同类型指针。

 

 

二级指针变量的引用
连续用两个 * 操作符。

 

 

结构体
结构体是多数据项的一种组织方式,是由多个数据项构成的紧密关联的数据单元。
结构体类型所占内存的大小是其所有成员所占内存大小之和。
结构体类型的定义

 

                 示例

 

结构体类型变量的定义
在定义好一个结构体类型之后,即可定义该结构体类型的变量。
格式: struct 结构体名 变量名 ;
¡ 如: struct student a;
结构体成员的引用
只能逐个引用结构体的数据成员,而不能一次引用结构体的所有成员。
使用分量运算符 ——“ .

 

结构体成员的初始化
在定义结构体变量的同时用花括号进行初始化。
如:   struct student a = {1, {'T', 'o', 'm', '\0'}};

共用体
几个不同的数据成员存放在同一段内存的结构。
共用体类型的定义方式、共用体变量的定义方式以及共用体成员的引用方式和结构体相类似,区别在于使用 union 关键字代替了 struct 关键字。
当各成员类型所占用的内存大小不同时,共用体所占的内存大小是其最大成员所占内存的大小。

 示例

 

 

自定义类型
使用typedef关键字为已存在的类型取一个别名,即自定义一个类型名
自定义类型的用法和功能与已有类型的用法和功能完全一样。
语法格式: typedef 已有数据类型 新类型名 ;
如:

常用于为书写较为复杂的类型 ( 如结构体、共用体 ) 取一个别名。
如:

 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: "linux下c语言编程入门.pdf" 是一本在网盘上提供的适用于Linux系统下的C语言编程入门教程的电子书。它可能包含了C语言基础、语法、数据类型、指针、数组、字符串等内容,并且以适合初学者的方式进行讲解。 通过这本书,你可以学习如何在Linux系统下进行C语言编程Linux是一个非常流行且强大的操作系统,许多开发者选择使用它来开发软件。C语言是一种底层语言,功能强大且广泛应用于各种领域,如系统编程、嵌入式开发和网络编程等。因此,学习如何在Linux下进行C语言编程将为你的编程生涯打下坚实的基础。 在学习这本教程时,你可以期望了解C语言的基本概念和语法,掌握如何使用它编写简单的程序,并逐步深入了解更高级的概念,如函数、结构体和文件操作等。这本教程可能会提供一些示例和练习,以帮助你更好地理解和应用所学内容。 值得一提的是,这本书在网盘上提供,意味着你可以免费获取它,而不需要花费额外的费用。你只需有一个可用的网络连接,并在网盘上搜索并下载这本书即可开始你的学习之旅。 总而言之,"linux下c语言编程入门.pdf" 是一个适用于Linux系统的C语言入门教程,它将为初学者提供学习C语言编程基础知识,并帮助他们在Linux系统上开始编写简单的C程序。这本书的免费提供使得获取它变得容易,只需搜索并下载即可开始学习。 ### 回答2: linux下c语言编程入门.pdf 网盘是一个在线存储和分享文件的平台,专门提供给用户上传、下载和传输PDF格式的C语言编程入门教程。 在linux系统下进行C语言编程是一种常见的选择,因为linux系统本身就内置了gcc编译器,可以直接进行C语言程序的编译和运行。而linux下c语言编程入门.pdf 网盘提供了对应的教程,方便初学者快速入门和学习C语言编程。 使用linux下c语言编程入门.pdf 网盘,可以从以下几个方面获得帮助和资源: 1. 学习资料:网盘上提供了C语言编程入门教程,用户可以下载该PDF文件,通过阅读学习基本的C语言语法、数据类型、控制结构等知识。这些教程通常结构清晰、易于理解,适合初学者入门。 2. 代码示例:网盘上可能还提供了一些C语言编程的代码示例,用户可以通过下载这些示例代码,实践理论知识,加深对C语言编程的理解。这些示例代码可能包括了一些常见的编程练习,能够帮助用户掌握C语言的基本语法和常用函数。 3. 讨论和交流:网盘上往往有一个交流平台,用户可以在这个平台上发布问题、交流心得、分享经验等。通过与其他初学者或有经验的程序员的交流,用户可以互相学习,获取更多关于C语言编程的知识和技巧。 总之,linux下c语言编程入门.pdf 网盘是一个提供C语言编程学习资源的平台,可以帮助初学者系统地学习和掌握C语言编程基础知识。通过下载相关教程和代码示例,以及参与交流和讨论,用户可以逐步提升自己的C语言编程能力。 ### 回答3: linux下c语言编程入门.pdf是一本介绍在Linux系统下使用C语言进行编程教程。该教程可以通过网盘进行下载和分享。 在网盘中,用户可以搜索并找到该教程,然后选择下载到本地或者在线阅读。用户可以通过网盘提供的下载链接将该教程保存到自己的电脑或其他设备上,方便随时学习和查阅。 该教程的内容包括C语言基础知识、语法、数据类型、运算符、流程控制语句等等,适合初学者入门使用。同时,还介绍了在Linux系统中使用C语言进行开发的一些常见工具和技巧,如gcc编译器、Makefile使用、调试工具等等。 通过学习该教程,用户可以了解到C语言Linux系统中的应用和开发环境的搭建方式。同时,也可以学习到如何使用C语言编写简单的程序和应用,如计算器、猜数字游戏等等。 总而言之,linux下c语言编程入门.pdf是一本在Linux系统中学习和使用C语言编程入门教程,用户可以通过网盘进行下载和学习。这本教程对于有志于学习C语言编程的初学者来说,是一个很好的学习资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

重生之我是泰勒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值