Linux系统下的C语言基础编程,内容为期十天自学路径(第一天)

第一次在CSDN上发布关于C语言学习的内容,我把C语言学习的内容分成了十份,一天学习一部分,可能有些知识概念比较笼统,可以根据自己的需求,按照我发布的内容作为一个学习树,有一个学习的方向,去规划学习,觉得有所帮助的同学可以给个关注哦。

==第一天==

Linux的优点

  • 开源 免费

  • 一切皆文件

  • 文件系统像是一颗倒置的树

  • 多用户、多任务

1.linux基础

1.1终端的使用

  • 点击桌面图标

 hqyj@ubuntu:~$ 
 用户名@主机名:路径$
 根目录:/
 用户目录:~  == /home/hqyj
  • ctrl + alt + t ---打开新终端

 默认为用户目录
  • ctrl + shift + n --- 打开新终端(当前路径)

  • ctrl + shift + t --- 新建标签

1.2命令

1.2.1 导航命令 pwd ls cd

  • pwd -- 打印当前的绝对路径

  • ls -- 将指定路径的内容输出到终端

 ls [选项] 路径
 注意:ls 后面缺省路径 代表打印当前路径的信息
 -a :查看所有内容(包含隐藏文件)
 隐藏文件:在Linux一些以.开头的文件,一般为配置文件
 -l :查看文件的详细信息
     ls -la == ll
     
 linux七大文件类型:lsp-bcd
 l:链接文件 
 s:套接字文件
 p:管道文件
 -:普通文件 --- 保存的字符
 b:块设备文件
 c:字符设备 --- /dev
 d:目录文件  --- 文件夹
 ​
  • cd -- change directory -- 进入如指定的路径

 cd 路径
 注意:只能进入目录文件
 ..:上一级目录

1.2.2 目录文件命令

  • mkdir -- 创建目录文件

 mkdir 文件名(不能有*?)
 mkdir -p 文件名1/文件名2/... -- 同时创建多级子目录  
  • rmdir -- 删除目录文件

  • rm -r -- 递归删除目录文件

  • rm 文件名 ---删除文件

1.2.3 普通文件命令

  • touch -- 创建普通文件

 touch 文件名1 文件名2 。。。
  • rm --删除

 rm 文件名1 文件名2 。。。
 rm -r 删除目录
  • cat -- 将普通文件的内容输出到终端

 cat 文件名

1.2.4 复制和剪切

  • cp -- 复制

 复制普通文件: cp 源文件名 目标文件名  --- 将原文件里的内容复制到目标文件
 复制目录文件: cp -r 源文件名 目标文件名
  • mv -- 剪切、重命名

 mv 源文件名 目标文件名 

1.3 编辑器

  • vim /vi

 vim 1.c --- 使用vi编辑器打开1.c 
 vi  1.c
 vi编辑器的配置文件:~/.vimrc
 命令行模式:
 ↑:光标向上移动 -- k
 ↓:光标向下移动 -- j
 ←:光标向左移动 -- h
 →:光标向右移动 -- l
 yy:复制一行
 nyy:复制n行
 dd:剪切一行
 ndd:剪切n行
 p:在光标所在行的下一行开始粘贴
 v:进入可视化模式 --- 进入可视化模式之后 选中内容 按= 自动调整缩进
 u:撤销
     
 命令行模式 -> 插入/编辑模式:
 i:从当前光标之前开始插入 
 a:从当前光标之后开始插入
 A:从行末开始插入
 o:从下一行开始插入
 插入/编辑模式 ->命令行模式 :Esc
 命令行模式 ->底行模式 :G
 :w -- 保存
 :q -- 退出
 :wq -- 保存并退出
 :x --保存并退出
 :q! -- 强制退出
 :w! --强制保存
 /string(字符串) -- 查找指定的字符串 -- 按n查找下一个
 : s/oldString/newString -- 用newString去替换oldString
 : s/oldString/newString/g -- 用newString去替换oldString 替换整行
 : %s/oldString/newString/g --   替换整个文本
  • gedit

 gedit 1.c

1.4编译器

  • gcc

  • 作用

 将源程序(xxx.c、xxx.cpp)编译成对应的机器语言。
  • 方法

 gcc xxxx.c --- 编译成功之后生成a.out可执行文件
 ./a.out  --- 运行可执行文件
 gcc xxxx.c -o prog1
 ./可执行文件命名 --- 运行可执行文件
 

步骤:

  • 预处理

 将源程序中预处理指令(#include #define)进行处理,头文件的展开,宏替换,删除注释。
 gcc -E xxxx.c
 gcc -E xxxx.c >> backup.c 将预处理之后的内容保存到backup.c
  • 编译

 将处理之后的程序编译成汇编语言。检查语法。
 gcc -S xxxx.c 
  • 汇编

 将汇编文件转换成目标机器可执行的二进制语言。自动识别当前机器的体系架构,生成相应的目标文件。
 gcc -c xxxx.c
  • 链接

 将多个目标文件链接到一起生成可执行文件。
 gcc *.o 

2.计算的组成

  • 中央处理器(CPU)

 执行指令,进行算术运算、逻辑运算。 
  • 内存

 存储数据和指令。
  • 输入设备、输出设备

 输入设备:   向计算机输入数据的设备。鼠标键盘。。。。
 输出设备:   将计算机处理之后的数据呈现给用户
  • 存储设备

 长期保存数据。硬盘。。。。
  • 总线

 计算中各部件进行数据传输。地址总线、数据总线、控制总线

3.计算机中数据的表现形式

  • 十进制 -- 满十进一

 255= 2 * 10^2 + 5 * 10^1 + 5 * 10^0
 ​
  • 二进制 -- 满二进一 -- 前缀0b

 1111 1111
 94 ->0b0101 1110
 1 * 2^6 + 0 * 2^5 + 1 * 2^4 + 1 * 2^3 + 1 * 2^2 + 1 *2^1 + 0 * 2^0
 139 ->0b1000 1011
  • 八进制 -- 满8进一 -- 前缀0

 94 ->0 136
 139 ->0b010 001 011 ->0 213
  • 十六进制 -- 满16进一 -- 前缀0x 0-9 A-F

 94 ->0b0101 1110->0x5E
 139 ->0b1000 1011->  0x8B
  • 字符型数据

 ASCII
 man ascii

==c语言==

1.编程规范

  • c源程序的命名方式

 以.c为后缀
  • c程序从main(主函数)开始,从主函数中的第一条语句依次往后执行

 #include <stdio.h>//c语言本身不提供输入输出,所有的输入输出都是通过调用标准库函数实现的
 int main()//c主函数的命名必须是main
 {
 return 0;//每一条语句以英文分号结束
 }
  • 主函数可以带参数,最多带两个

 #include <stdio.h>
 int main(int argc,char *argv[])
 {
 return 0;
 }
  • 单行注释 ---以//后面都是注释的内容

  • 多行注释

 /*
 中间都是注释类型
 ​
 */
  • 条件编译

 #if 0
 ​
 #else
 ​
 #endif 
  • {}

 在语言中一个{}代表一个模块

2.c语言中的数据表现形式

2.1 常量(只读) -- 在程序执行过程不能被改变的数据

  • 整型常量

 123,-345
 0x5E、0b1011 1101
  • 浮点型常量

 3.14,-1.2345
 31.4 --->3.14 *10 ^1  ->3.14E1
 0.314 ---->3.14*10 ^-1 -->3.14E-1
 注意:浮点型数据都是有符号的数据
  • 字符型常量

 ''括起来的一个字符
 'a'
 转义字符  --->'\n' '\t'
  • 字符串常量

 ""括起来的多个字符
 "hello world"
 注意:字符串常量末尾自带一个\0作为字符串结束的标志
  • 符号常量

 #define  PI 3.14
 //在预处理之后所有出现PI的地方全部替换成3.14
 ​
 预定义宏:
 __LINE__ --- 所在行号 --整数
 __DATE__ --- 编译日期 --字符串
 __func__ --- 所在函数名 --字符串
 可以直接打印printf("%d\n",_LINE_);

2.2 变量

  • 变量的定义

 <存储类型> <数据类型> 变量名;
 int a;
 int a1,a2,a3;
  • 存储类型

 extern 引用类型 -- 声明 --- 扩展一个全局变量的作用范围
 ​
 static 静态类型
     static修饰局部变量:延长局部变量的生命周期到整个程序结束。
             注意:static 修饰局部变量,只会被定义一次。
         (局部static int i所在的.c文件中i只会定义一次再一次遍历到static int i会被跳过)
         
     static修饰全局变量:限制全局变量不可被同一源程序中其他文件引用
         (全局static int i 只能在他所在的.c文件中运用i)
 ​
 auto 自动类型  -- 用来修饰局部变量 -- 代表该变量所在的内存区域在栈区
     注意:在定义局部变量缺省存储类型时,该变量的存储类型自动转为auto
     {
         int a;
         == auto int a;
     }
 register 寄存器类型 -- 修饰局部变量时,在程序运行时直接将变量加载到寄存器上。
         注意:寄存资源有限,很可能申请失败,失败之后自动转为auto
 ​
 volatile
     volatile int flag = 0; // 使用volatile修饰全局变量flag
     通过一个循环不断检查flag的值,在加一个改变flag值为1的函数但不调用,直到flag被中断处理函数中修改为1。由于flag是        volatile类型的,编译器不会对其进行某些优化,以确保每次循环都重新读取flag的最新值,而不是使用之前缓存的值。
 ​
 const -- 修饰只读 -- const 修的变量只能读不能写。
     const int a = 0;
     const 修饰变量时,要注意初始化。
  • 数据类型

 整型:
 char(字符型) :1byte
 unsigned char:  0 -- 2 ^ 8 -1
 signed   char:  -2^7 -- 2^7-1
 short(短整型):2byte
 unsigned short:
 signed short:
 int(整型)    :4byte
 long(长整型)  :8byte

 注意:在定义变量时如果缺省符号(unsigned、signed),默认为有符号

 int a;
 == signed int a;

 浮点型:
 单精度浮点型:float:4byte
 精确度:6-7位
 双精度浮点型:double:8byte
 精确度:15-16位
  • 编码

 原码:对应的机器码(带符号位)
 反码: 
     正数的反码 就是原码不变
     负数的反码 原码符号位不变其余位按位取反
 补码:
     正数的补码 就是原码不变
     负数的补码 反码+1
 注意:对于有符号数来说存储都是补码
  • 变量名

 标识符:程序员按照命名规则自定义的词法符号。
 命名规则:
     由数字、字母、下滑线_
     不能以数字开头
     不能与关键字重名
 注意:c语言严格区分大小写
 e.g.1
     1str、For、volatile、goto
 c语言关键字32:
 存储类型:  static extern register auto volatile const 6
 数据类型: char short int long float double signed unsigned 8
 构造类型:  struct union enum 3
 空类型:  void 1
 语句:   if else switch case break continue default while do for goto return  12
 求字节: sizeof 1
 取别名:  typedef 1
  • 变量的初始化-- 在定义变量时给变量的初始化值

 char ch = 'a';
 int i = 10;
 注意:在定义变量时如果不知道暂时要给什么初值,尽量初始化为0
  • 赋值

 int a;
 a = 10;

练习:char ch = 127; ch = ch + 1; ch = 128

练习:unsigned char ch = -1;

练习:交换两个变量的值

 int a = 10,b = 20;
 int temp = a;
 ​
 ///
 a ^= b;
 b ^= a;
 a ^= b;
  • 全局变量

 定义位置:定义在所有模块之外的变量
 作用范围:在定义的文件之内
 生命周期:整个源程序
 没有初始化:0
  • 局部变量

 定义位置:定义在模块之内的变量
 作用范围:模块之内
 生命周期:从定义开始到模块结束   
 没有初始化:随机值
  • 在不同{ }可以定义同名的变量

2023年11月28日

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Linux 系统下编写 C 语言程序的方法有很多,常见的有以下几种: 1. 使用命令行编译器,如 GCC(GNU Compiler Collection)。 2. 使用文本编辑器和命令行编译器配合进行编程。 3. 使用集成开发环境(IDE)进行编程,如 Eclipse, Code::Blocks。 在编写代码之前,需要安装 GCC 编译器。在 Ubuntu 上,可以使用命令 "sudo apt-get install build-essential" 安装。 编写完代码后,使用命令 "gcc -o [可执行文件名] [源文件名].c" 进行编译,编译成功后可以使用 "./[可执行文件名]" 运行程序。 ### 回答2: 在Linux系统下使用C语言编程,既可以使用文本编辑器手动编写代码,也可以使用IDE。常用的文本编辑器有vi,emacs,nano等,开发工具有Code::Blocks,Eclipse,NetBeans等。 Linux系统下使用C语言编程需要安装gcc编译器。gcc是GNU C语言编译器,可以将C语言代码编译成机器码。执行以下命令安装gcc: sudo apt-get install gcc 编写C语言代码后,使用gcc编译器将代码编译成可执行文件。例如,将一个名为hello.c的文件编译成名为hello的可执行文件,执行以下命令: gcc -o hello hello.c 其中,-o表示输出文件名为hello。 编译后,可以执行以下命令运行程序: ./hello 在Linux系统下,使用C语言编程可以方便地访问系统资源,如文件,网络等。Linux系统提供了许多C语言库,如libc,libm等,可以方便地进行编程。同时,Linux系统具有较高的稳定性和安全性,可以使用C语言编写高性能,高可靠性的程序。 总之,Linux系统下使用C语言编程是一种方便,高效,稳定的编程方式。它可以满足开发者的需求,同时为开源社区的发展做出贡献。 ### 回答3: Linux是一种广泛使用的操作系统,适用于用于编程的多种语言,包括C语言。C语言是一种古老但常用的编程语言,它通常用于系统编程和操作系统开发。在Linux系统中,C语言编程具有非常广泛和多样的应用。以下是关于Linux系统下C语言编程的一些重要信息。 首先,C语言Linux系统中是一种非常重要的编程语言。尽管许多其他编程语言也可以在Linux上使用,但C语言仍然是一个最流行和灵活的编程语言之一。C语言几乎可以用于任何类型的开发,包括应用程序和系统编程等。 其次,在Linux系统中进行C语言编程的常用工具包括GCC编译器,Make工具和调试工具如GDB。 GCC编译器是GNU C语言编译器的缩写,是一种可在多平台上编译C代码的工具。Make工具是用于编译和生成可执行文件的工具。GDB是一个强大的调试工具,可帮助开发人员检查和排查代码中的错误。 第三,Linux系统的优势为C语言开发者提供了多种可能性。一种是通过CLI(命令行界面)进行编程,这对于那些使用Linux服务器的开发人员来说非常方便。另一种则是在Linux上使用集成开发环境(IDE),如Eclipse IDE和Code::Blocks等,简化了代码编写和调试过程。 最后,C语言Linux系统中拥有广泛的应用领域。许多系统编程和操作系统任务需要C语言的应用程序,如驱动程序开发和网络编程等。C语言还被广泛用于游戏开发和嵌入式系统开发等多个领域。 综上所述,C语言Linux系统中非常有用,具有广泛的应用场景和多种工具和集成开发环境供开发人员使用。C语言的流行和灵活性使其成为Linux系统下最受欢迎的编程语言之一。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值