C语言笔记1(c简介,环境设置,程序结构,Linux基本知识)
1. c简介
c语言是一种通用的高级语言,最初是为开发unix操作系统而设计的。
unix操作系统,c编译器,和几乎所有的unix应用程序都是用c语言编写的。由于各种原因,c语言现在已经成为一种广泛使用的专业语言。
1.易于学习
2.结构化语言
3.高效率的程序
4.可以处理底层的活动
5.可以在多种计算机平台上编译
2. c环境设置
2.1 本地环境设置
如果你想要设置c语言环境,需要确保电脑上有以下两款可用的软件,文本编辑器和c编译器
2.2 文本编辑器
Notepad通常用于Windows操作系统,vim/vi可用于Linux/UNIX操作系统上。
通过编辑器创建的文件通常成为源文件,源文件包含程序源代码。c程序的源文件通常使用扩展名.c。
2.3 c编译器
c语言编译器用于把源代码编译成最终的可执行程序。
最常用的免费可用的编译器是GNU的C/C++编译器。
2.3.1 UNIX/Linux上的安装
在命令行用以下命令来检查系统上是否安装了gcc:
$ gcc -v
如果已安装:
Using built-in specs.
Target: i386-redhat-linux
Configured with: ../configure --prefix=/usr .......
Thread model: posix
gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)
未安装请按照http://gcc.gnu.org/install/上的详细说明安装
2.3.2 Mac Os上的安装
最快捷的获取gcc的方式是从苹果的网站上下载Xcode开发环境,并按照说明进行安装
Xcode可从 developer.apple.com/technologies/tools/ 上下载
2.3.3 Windows上的安装
为了在Windows上安装gcc,需要安装MinGW。可从 mingw-w64.org上进行下载,下载最新版本的MinGW安装程序,命名格式为MinGW
添加您安装的MinGW的bin子目录到PATH环境变量中,这样就可以在命令行中通过简单的名称来指定这些工具。
当完成安装时,可以从Windows命令行上运行gcc,g++,ar,ranlib,dlltool和其他一些GNU工具。
3. c程序结构
3.1 c Hello World实例
c程序主要包括以下部分:
1.预处理器指令
2.函数
3.变量
4.语句&表达式
5.注释
实例:
#include <stdio.h>
int main()
{
/* 我的第一个 C 程序 */
printf("Hello, World! \n");
return 0;
}
1.程序的第一行#include<stdio.h>是预处理器指令,告诉c编译器在实际编译之前要包含stdio.h文件。
2.下一行int main()是主函数,程序从这里开始执行。
3.下一行/**/将会被编译器忽略,这里放置程序的注释内容。它们被称为程序的注释。
4.下一行printf(...)是c中另一个可用的函数,会在屏幕上显示消息
5.下一行return 0;终止main()函数,并返回值0。
3.2 编译&执行c程序
源代码保存在一个文件中,编译并运行的步骤:
1.打开一个文本编辑器,添加上述代码。
2.保存文件为hello.c
3.打开命令提示符,进入到保存文件所在的目录。
4.输入gcc hello.c输入回车,编译代码。
5.如果代码中没有错误,命令提示符会跳到下一行,并生成a.out(Windows生成a.exe)可执行文件。
6.a.out执行程序。
$ gcc hello.c
$ ./a.out
Hello, World!
如果是多个c代码的源码文件,编译方法如下:
$ gcc test1.c test2.c -o main.out
$ ./main.out
注:test1.c与test2.c是两个源代码文件。
4. Linux基本知识
4.1 基本概念
Linux是最受欢迎的自由电脑操作系统内核,是一个用c语言写成,符合POSIX标准的Unix操作系统。
Linux操作系统的诞生,发展,和成长过程依赖于五个重要支柱:
unix 操作系统,minix操作系统,GNU计划,POSIX标准和互联网。
4.2 常用Linux命令
4.2.1 Linux的文件结构:
在Linux操作系统中,一切的资源都是文件的形式存在的。
df -h查看硬盘的使用情况
cat /proc/meminfo查看内存的信息
Linux标准的文件目录结构:
. / 根,类似于Window的盘符;从/开始的文件都是绝对路径。
. /boot 系统引导程序
. /bin 存放常用的程序
. /sbin 存放系统管理的程序
. /home 普通用户的家目录,创建的新用户所在的位置。
. /lib和lib64 存放32位或64位的程序依赖库
. /usr 存放用户安装的应用程序及头文件、库文件
. /root root系统超级管理员的家目录
. /opt 额外的资源存放的位置
. /media 存放媒介的资源目录
. /dev 存放外部设备的资源目录,不能直接使用,需要将资源挂载到其他位置
. /mnt 将外部设备资源挂载的目录
. /proc 存放操作系统与硬件、版权相关信息,如cpu,meminfo
. /var 存放程序运行的可变资源
. /run 存放程序运行时的资源
. /etc 存放程序的配置资源和服务
. /tmp 存放临时文件的
4.2.2 Linux命令结构
语法:
命令名 [选项] [参数...]
命令存在哪些选项,需要查看帮助信息,查看帮助信息方式:
1) 命令 --help
2) man 命令
3) info 命令,包含了用法和参数说明
4) whatis 命令, 查看命令的简短描述
4.2.3 常用命令
1. man命令
查看命令的帮助信息的,这个命令包含三个级别(1.Linux命令 2.系统调用函数(内核提供给用户的接口函数) 3.库函数(c语言实现的函数))
命令语法:
man [1|2|3] [-f] 命令
2. 命令技巧
1)自动补全
1. 自动补全命令 : 输入命令+两次<Tab>
2. 自动补全文件名 : 输入文件名开头部分+按<Tab> 自动补全
2) 历史命令的记录
3. 命令的历史记录: 终端中按向上、向下的方向键,可以将之前执行的命令显示出来
3) 重定向
将命令的执行结果 输出到指定的位置(文件)上
1.重写模式 > 将目标文件清空,再写
2.追加模式 >> 将命令的结果追加到文件的尾部
用法:命令 [选项] [参数] > 或 >> 目标位置
4) 管道
Linux的管道代表的符号 | ,作用是将其左边的结果转交给右边的命令
3. ls命令
ls命令列出目录中的文件及子目录
默认情况下,显示是当前工作目录的文件及子目录
命令格式:
ls [-l -a -A -h -s -t] [文件位置]
选项:
1.-l 以列表的方式显示目录中的内容(文件,子目录)
2.-h 人性化显示文件大小的,即文件大小自动加单位(K,M,G,T,P)
这个选项必须和-l 一起使用
3.-a 显示所有文件,包含.(当前目录), ..(当前目录的父级目录)和.开 头的隐藏文件。
4.-A 除了.和..之外,显示其它所有文件
5.-t 依据文件的修改时候进去排序,最新修改的排在第一位。
要求和-l一起使用,如果想反向排序时,使用-r选项
6.-s 按文件大小排序,最大的排在第一位。一般和-l,-h,-r组合使用
4. tree命令
tree需要安装,功能是将指定文件位置的所有子文件及目录递归地展示出来(以树的结构)
安装:sudo apt install tree -y
命令格式:
tree [-L n] [文件位置]
5.clear命令
清除当前屏幕的所有内容(假清除,只是创建了一个新页)
6.which命令
查找命令的位置
7.head命令
查看文件内容的前n行
8.tail命令
查看文件内容的后n行
9. cd命令
cd(change directory)改变(切换)当前工作目录
命令格式:
cd 新工作目录的位置
目录位置的写法:
Linux中文件路径的分隔符:/ (斜杠)
Windows中文件路径的分隔符: \ (反斜杠)
1) 相对位置(相对于当前工作目录的位置)
./ 当前工作目录的位置【可省略】
../ 当前工作目录的父类目录的位置
../../当前工作目录的父级的父级目录
2) 绝对位置(从/开始)
3) 特殊的写法
cd 切换到当前用户的家目录
cd - 回到上一次的工作目录
~ 代表当前用户的家目录
10. pwd命令
pwd(print work directory)打印当前工作的工作目录的绝对位置(文件位置)
11. cat命令
cat是查看文件内容的命令
命令格式:
cat [-n -b] <文件位置>
选项-n显示行号,-b非空的位置显示行号
12. rm命令
rm(remove) 删除文件或目录的命令
相关的命令: rmdir 删除空目录,mkdir 创建空目录
命令格式
rm [-r -f] <文件位置>
选项-r递归删除子目录及子文件,-f强制删除,不会提示错误信息(文件不存在)
13. cp命令
cp(copy)复制文件或目录到目标位置
命令格式:
cp [OPTION]...[-T] SOURCE DEST 复制source文件到dest位置
cp [OPTION]...SOURCE...DIRECTORY 复制多个source文件到目录中
cp [OPTION]... -t DIRECTORY SOURCE... 同上,先写目录
选项:-f强制替换,-r复制目录 -u更新文件或目录 -v显示复制的过程信息
14. mv命令
mv(move)移动文件或目录到新位置,或者重命名文件或目录
命令格式:
mv [OPTION]...[-T] SOURCE DEST
mv [OPTION]...SOURCE...DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
选项:-f强制替换,-r复制目录 -u更新文件或目录 -v显示复制的过程信息
15. mkdir命令
用于创建空目录,可以级联创建父目录(不存在时)
命令格式:
mkdir [-p] 目录位置
16. touch命令
主要用于创建空文件,或者更新文件的最后修改时间
17. find命令
查找文件所在位置的命令
命令格式
find [目录位置][-maxdepth n][-name '*.h|c|txt'] [-mmin n] [-amin n] [-atime n] [-mtime n] [-cmin n] [-ctime n]
-atime n 最后访问的时间 是 n*24小时之前
-amin n 最后访问的时间 是 n分之前 (过去 n 分钟)
-mmin n 内容修改的分钟, -mtime 内容修改的n*24 小时。
-cmin 文件状态最后修改的分钟, -ctime 文件状态最后修改的n*24小时
n 的表示,可以带 + 表过大于n含义, - 表示小于n的含义
18. grep命令
主要用于过滤内容的(按行),一般于|之后使用
命令格式:
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN]... [-f FILE]... [FILE...]
选项:-v反向匹配,-l输出匹配的文件位置,-L输出不匹配的文件位置,-i不区分大小写,--color[=never | auto | always]
19. ln命令
主要用于创建文件的链接
链接的类型:
硬链接:文件的别名,不会创建新的文件号(inode)
软链接:是文件的一个引用,是一个独立的文件,(具有inode文件号)
硬、软链接的区别:软、硬链接操作相当于对原文件的操作,唯一的区别是原文件删除时,硬链接文件不受影响,而软链接无效(目标不存在)
ln [-s] 目标文件 链接名
20. tar命令
tar主要用于创建压缩,解压缩文件
文件的压缩格式:gzip,bzip2
gzip压缩文件的扩展名:xxx.tar.gz
bzip2压缩文件的扩展名:xxx.tar.bz
命令格式:
tar [-][cxzjvtf] 压缩文件名 [-C 提取压缩文件的内容到指定位置] [待压缩文件或目录]
选项: c创建新的压缩文件,x解压,z是gzip格式,j是bzip2,v显示压缩或解压的过程文件信息,t显示压缩文件中的所有内容,f指定压缩文件名
4.3 vim编辑器
vim是一个非常强大的编辑器,可以用于开发各种语言的源码工具之一。
4.3.1 vim打开文件
命令格式:
vi 文件位置
vim 文件位置
4.3.2 vim的三种模式
1.编辑模式 :打开文件之后的默认模式,可以执行特定的指令,如i,o,a,O等,如果按i表示,进入插入模式。在编辑模式下,按shift:进入命令行模式
2.插入模式:输入文件内容,按esc退出插入模式,进入编辑模式
3.命令行模式:可以输入指令,回车执行,如x指令是保存并退出文件
4.3.3 编辑模式的指令
i 当前光标位置上开始插入内容
a 当前光标位置之后开始插入内容
o 在当前光标所在行的下方插入新的有一行(空行)
O (shift o) 在当前光标所在行的上方插入新的一行(空行)
[n]dd 从当前行向下删除n行,默认n为1
u 撤销刚刚的操作
ctrl+r 取消撤销
[n]yy 从当前行向下复制n行,默认n为1
p 将dd或yy操作的内容复制到当前光标所在行的下方
x 删除光标所在位置的内容
shift+^ 或 0 快速移动光标到行首
shift+$ 快速移动光标到行尾
gg 快速移动光标到文档的开始位置
G 快速移动光标到文档的最后一行的首字符位置
shift+[ 快速移动光标到段前
shift+] 快速移动光标到段尾
h j k l 移动光标(左,下,上,右)
组合应用:ggdG 清空文档 内容
4.3.4 命令行的指令
:set number 显示行号 :set nu
:set nonumber 取消显示行号 :set nonu
:set ff 查看文件的系统格式 dos,unix,mac
:set ff = nuix
:set fileencoding 显示文件的内容编码格式,utf-8,unicode,gbk,gb2312
:set fileencoding=utf-8
:n 跳转到n行,如1,同nG 如编辑模式 7G == :7
:/内容 从当前光标位置开始向下查找内容,会自动向上查找,按n向下查找下一个,按N向上查找上一个。
:%s/原内容/新内容/ig 全文档查找原内容,如果找到了则替换为新内容,i表示不区分大小写(字母),g 表示全文档(全局) , 如果没有g表示,只替换每行的第一个匹配的内容。
:x 保存并退出
:w 保存
:q 退出
:q! 强制退出
:wq! 强制保存并退出
:!linux有效命令
4.4 gcc编译器
gcc编译器是用于编译c源文件,生成系统可执行的二进制程序
4.4.1 检查gcc环境
which gcc
如果不存在的话,则需要安装
sudo apt install gcc -y
4.4.2 gcc编译命令
一步到位【推荐】
gcc [-o 目标程序名] 源文件
如果不指定-o时,默认生成a.out可执行文件
四步完成编译:
gcc -E xxx.c -o xxx.i 预处理
gcc -S xxx.i -o xxx.s 编译
gcc -C xxx.s -o xxx.o 汇编
gcc xxx.o -o xxx 链接
标签:文件,gcc,语言,...,位置,笔记,命令,目录
From: https://www.cnblogs.com/dijun666/p/17626326.html