您现在的位置:首页 > IT认证 > Linux认证 >

Linux下C编程


Linux下C编程 

一。Linux简介 三。指针、函数及自定义数据类型

a) 指针变量

Int *p1,*p2;

Ing *pn;

Pn=&n;

b) 指针运算

Int a[5]={1,2,3,4,5};

Int *p1 = &a[1];

这样指针p1就指向数组a的第二个元素

c) 指针类型转换

首先定义指针变量,然后强制转换

Char *pc;

Int *pi;

Pi=(int *)pc;

d) 指向指针的指针

Int **pp;

e) 函数声明

Int max(int,int);

Int max(int x,int y)

{

Int t;

T=(x>y)?x:y;

Return t;

}

f) 局部变量

Int func()

{

Int I;

}

全局变量

Int x;

Int main()

{

}

g) 变量的静态存储和动态存储

全局变量即是静态变量,定义时就分配存储单元一直到程序结束

函数的形式参数即是动态变量,使用时才分配存储单元。

自动变量auto、外部变量extern、静态变量static、寄存器变量register

默认都是自动变量

Auto int I; auto可以省略

外部变量即已用其他源文件中的变量

静态全局变量表示不能被其他源文件使用,与extern相反。

静态局部变量定义在函数内,但在函数结束后会继续驻留内存,并影响函数的下次调用。

寄存器变量是放在cpu寄存器内,只有自动局部变量可以定义为寄存器变量。

h) 外部函数 可以被其他源文件调用

Extern int add()

{

}

内部函数只能被本文件的函数调用

Static int add()

{

}

i) 函数指针

Void (*p)(int x)

j) 结构体

Struct name

{

Int id;

}

定义结构体

Struct student a;

直接定义结构体变量

Struct

{

Int id;

} a;

结构体初始化

Struct student a = {

23,

};

结构体指针

Struct student *p;

结构体引用

a. id

a->id

(*p)。id

p->id

嵌套结构体

Student.address.zipcode=200000

    a)shell变量

    $0 脚本名称

    $# 命令行参数个数

    $* 所有命令行参数

    $[1-n] 第1-n个参数

    $$ 当前参数的标示符

    $! 后台运行的最后一个进程标示符

    $? 命令退出状态

    二。C语言基础

    a)      开发流程

    编辑源文件->编译源文件->连接目标文件和库文件->运行

    b)      数据类型

    有字符型char、整形 int、浮点型 float、双精度浮点型 double、空值 void

    获取数据类型的字节数 sizeof

    c)      运算符

    加+、减-、乘*、除/、取余%、自增++、自减--

    ++x 等于 x=x+1;

    ++x先执行加一,再引用数值,x++先引用数值,再加一

    d)      关系运算符和逻辑运算符

    < > == >= <= !=

    &&|| !

    e)      位运算符

    与& 或| 异或^ 取反~ 左移《 右移》

    f)       表达式

    If()

    {

    Statement;

    }

    Else if()

    {

    Statement;

    }

    Else

    {

    Statement;

    }

    Switch()

    {

    Case 常量1:

    Statement;

    Brea;

    Case 常量2:

    Statement;

    Break;

    Default:

    Statement;

    }

    For(表达式1;表达式2;表达式3)

    {

    Statmennt;

    }

    While(表达式)

    {

    Statement;

    }

    Do

    {

    Statement;

    }

    While(表达式)

    g)      跳转语句

    Break 1)switch中中止某个case 2)循环结束

    Continue 结束本次循环

    h)      数组

    Int array[5]={1,2,3,4,5};

    Int b[2][3]={{1,2,3},{4,5,6}};

    i)        字符组

    Char str[5]={‘h’,’e’,’l’,’l’,’o’};

    j)        宏定义

    #define PI 3.1415926

    #define MAX(a,b) (a>b)?a:b

    宏名和形式参数之间不能加参数

    k)      文件包含

    #include <文件>

    在系统目录中找,调用系统库文件

    #include “文件名”

    在当前目录中招,再找到系统目录中招,用户自己的库文件

    l)        条件编译

    #if

    #else

    #endif

    #ifdef

    #else

    #endif

k) 共同体

Union name

{

}

共同体和结构体区别:共同体存储是采用覆盖技术,不同数据类型成员占用同一段内存空间。某一时间点,共同体只能存储某一成员信息。

l) 枚举

Enum week

{

SUNDAY,MONDAY,TUESDAY

}

枚举定义

Enum week w;

枚举引用

A=Tuesday

Print的话,出来时2

四。数据结构

a) 线性表

b) 栈

只允许在一段插入和删除数据的线性表

c) 队列

先进先出的线性表,允许在一段插入,另一端删除

d) 二叉树

e) 查找算法

f) 排序算法

五。文本编辑器

a) 光标移到{,然后输入%,会跳转到匹配的}

b) 自动补全

Pr

Ctrl+p或者ctrl+n

c) 自动缩进

:set cindent shiftwidth=4;

手动缩进

在某行打==

=G所在行到文件底部自动缩进

六。GCC编译器

a) Gcc基本选项

-E 预处理后及停止

-S 编译后停止

-c 编译或汇编源文件

-o file 制定输出文件

b) 警告选项

-Wall 启用所有警告信息

-Werror 发生警告时取消编译操作

-w 禁用所有警告信息

c) 优化选项

-O0 不优化

-O或-O1 基本优化

-O2 除了-O1外,还额外调整

-O3 除-O2外,还处理器优化

-Os 生成最小执行文件,用于嵌入式领域

d) 头文件包含变量和函数声明,不包含定义函数的实现

函数具体是现在库文件中,分为静态库和动态库。

静态库编译连接时将源代码加入到可执行文件中,后缀一般为。a

动态库程序执行时有链接文件加载,一般为。so

七。调试工具
a) 启动gdc

$gdb

退出

Quit

b) 载入程序

$gdc example

(gdb) file example

列出源代码

(gdb) list

执行程序

(gdb) r

断点处继续运行程序

(gdb) c

帮助

(gdb) help

在第九行设置断点

(gdb) b 9

查看断点

(gdb) info break

删除断点

(gdb) d 1

删除制定行上的断点

(gdb) clear 9

禁用和恢复断点

(gdb) disable 1

(gdb) enable 1

查看变量

(gdb) p sume

自动到断点处显示变量

(gdb) display sum

显示变量数据类型

(gdb) whatis x

修改变量值

(gdb) set sum = 100

单步执行程序 step

(gdb) s

继续 next

(gdb) n

退出 return finish

直接退出

(gdb) return

退出前执行完程序

(gdb) finish

执行到某行

(gdb) until

跳转某行

(gdb) j 15

强制调用函数

(gdb) call printf(“”)

查看堆栈信息

backtrace

(gdb) bt

Frame

(gdb) f 1

查看当前栈信息

(gdb) info frame

查看源程序信息

(gdb) info source

查看寄存器

(gdb) info registers

查看汇编代码

(gdb) disassemble printinfo

八。多文件项目管理Make,makefile,automake

九。Linux C基本应用

相关文章

无相关信息
更新时间2022-03-13 11:11:02【至顶部↑】
联系我们 | 邮件: | 客服热线电话:4008816886(QQ同号) | 

付款方式留言簿投诉中心网站纠错二维码手机版

客服电话: