怎么样更好的做网站,青岛网页搜索排名提升,做矢量图的网站,腾达建设网站重识C语言C语言是一种通用的, 面向过程的编程语言, 在系统与应用软件的开发应用较广是人类和计算机交流的一种方式ANSI C#xff1a; 是C语言的标准, 为了避免各开发商用的C语言语法的差异C语言的特点: 简单, 快速, 高性能, 兼容性好, 功能强大, 易于学习C语言适合做什么Linux… 重识C语言C语言是一种通用的, 面向过程的编程语言, 在系统与应用软件的开发应用较广是人类和计算机交流的一种方式ANSI C 是C语言的标准, 为了避免各开发商用的C语言语法的差异C语言的特点: 简单, 快速, 高性能, 兼容性好, 功能强大, 易于学习C语言适合做什么Linux嵌入式, 小工具(命令行下的cd, ls之类的命令) 小巧灵活语法简单适合做小工具与硬件打交道的程序: 操作系统, ARM嵌入式, 单片机编程以及Arduino编程等等对性能要求较高的应用程序: NGINX(C)的并发量 Apache(C ) * 10C适合领域小工具语法简单和硬件打交道的程序 ARM嵌入式单片机Arduino编程有指针可操作内存有高性能要求的程序nginx:c apache:c linux嵌入式开发环境与配置C语言是随着UNIX诞生而产生的一门编程语言Mac电脑是Unix内核; Windows下可以安装Linux虚拟机UbuntuUbuntu和CentOS是较为常用的Linux发行版本, 个人电脑用Ubuntu更好Ubuntu的kylin版对中文支持很好amd64版: AMD当初率先推出64位CPU, 所以Ubuntu把64位CPU型号定义为amd64(Intel照用), 一直沿用到现今; 32位用x86LTS版: 长时间的技术支持版本装Ubuntu系统可以选择双系统, 也可在原来的Windows电脑上装虚拟机PS: 尽量在Linux环境下开发C语言程序常用指令终端编辑器emacs vim安装软件sudo apt install 【软件名】更新软件sudo apt updateCtrl Alt T打开终端cd ~ 进入当前用户的根目录pwd 查看当前所在路径ls 当前章目录包含哪些文件ls -l :显示当前文件的类型权限创建时间名字ls -al或ll:显示隐藏文件如果前面是d就是文件夹,-就是普通类型的文件touch ** 创建字符型文件rm ** 删除mkdir ** :创建目录(文件夹)vi ** 打开(进入)文件vi 一个不存在的文件进入后无法输入内容因当前在命令模式下按字符i可进入INSERT插入模式就可输入内容按Esc返回命令模式;在命令模式下:w 保存该文件:q 退出i 当前光标前面插入字符Shift i 跳到本行行首插入字符a 当前光标后面插入字符Shift a 跳到本行末尾插入字符o 在当前下一行插入字符Shift o 在当前上一行插入字符x 删除当前光标所处字符d d 删除整行Linux下最好用的文本编辑器: emacs, vimcc -v(gcc -v): 查看编译器版本apt-get是一条linux命令适用于deb包管理式的操作系统主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。clear清洁屏幕Linux下第一个C程序linux下一般不用void main最新c语言标准int main#include int main()
{ printf(hello,world!\n); return 0;
}1234567cc a.c1默认会为我们编译并生成可执行文件a.out(可读可写可执行)./表示当前路径下./a.out 执行当前路径下的a.out文件r表示可读 w表示可写 x表示可执行三组重复的顺序为”创建者”,”用户组”,”任意其他用户”多个源文件分而治之c语言是一个结构化的程序语言是支持多函数的。程序可由若干个函数组成。vim hello.c1最原始版本的实现(hello.c):#include int max(int a, int b)
{ if(ab){ return a; }else{ return b;}
}int main()
{ int a1 33; int a2 21; int maxNum max(a1,a2); printf(the max value is %d\n,maxNum); return 0;
}12345678910111213141516171819我们的stdio.h是在我们的user/include中被内置了在编写max函数时对齐编写内部时括号进行缩进对齐。附加知识: vim分屏显示:sp 文件名 //创建打开新文件上屏: ctrl w 上箭头下屏: ctrl w 下箭头打开行号 :set nu剪切(最后一行行数) dd粘贴p//这两个不用点冒号关闭行号set nonu如果就是上图代码直接编译会报错这是一个未声明的函数。有两种分离方案:第一种是int max(int a,int b);,在hello.c中声明该方法然后编译的时候需要加上max.c一种是#include max.c 然后编译的时候就不需要加上max.c一起编译版本1:0-hello.c:#include int max(int a,int b);int main()
{ int a1 33; int a2 21; int maxNum max(a1,a2); printf(the max value is %d\n,maxNum); return 0;
}12345678910110-max.c:int max (int a, int b)
{ if(ab){ return a;}else{ return b;}
}12345678编译命令:gcc 0-hello.c 0-max.c -o 0-hello.out1如果不加上0-max.c一起编译会出现错误gcc 0-hello.c -o 0-hello.out/tmp/cc8GuaAH.o在函数‘main’中0-hello.c:(.text 0x21)对‘max’未定义的引用collect2: error: ld returned 1 exit status1234版本21-hello.c:#include #include 0-max.cint main()
{ int a1 33; int a2 21; int maxNum max(a1,a2); printf(the max value is %d\n,maxNum); return 0;
}12345678910110-max.c与原来的一致编译命令:gcc 1-hello.c -o 1-hello.out1如果此时多加了0-max.c一起编译gcc 1-hello.c 0-max.c -o 1-hello.out
/tmp/ccjcCmVa.o在函数‘max’中0-max.c:(.text 0x0): max被多次定义
/tmp/cclIxMtD.o:1-hello.c:(.text 0x0)第一次在此定义
collect2: error: ld returned 1 exit status12345终端下gcc 文件名.c -o 命名.out生成.out并命名#include 表示在预装的库里查找#include max.c表示在当前目录内查找文件include max.c相当于把整个函数复制进来了。效果等同于写进来wqa 是将多个文件一起保存头文件与函数定义分离把函数的声明和定义分离开来代码没有main函数不能执行main是入口。.h 头文件.o 编译之后的中间文件.c 源代码mtianyanubuntu:~/Desktop/zjuPlan/CSF878/CCode/linux_c/2-lesson/part1$ ls0-max.c 1-hello.c12加快编译速度gcc -c 0-max.c -o 0-max.o1将max.c变成max.o之后我们需要把hello.c中的include注释掉并添上方法声明#include //#include 0-max.cint max(int a,int b);123可读可写不可执行,max.o相当于计算器对于源代码进行了翻译变成计算机可识别的机器码gcc 0-max.o 1-hello.c -o 1-hello.out1新建一个min.cint min (int a, int b)
{ if(ab){ return a;}else{ return b;}
}12345678hello.c中进行minNum的调用#include //#include 0-max.cint max(int a,int b);int min(int a,int b);int main()
{ int a1 33; int a2 21; int maxNum max(a1,a2); int minNum min(a1,a2); printf(the max value is %d\n,maxNum); printf(the min value is %d\n,minNum); return 0;
}123456789101112131415编译命令gcc -c min.c -o min.o1gcc 0-max.o min.o 1-hello.c -o 2-hello.out1加快编译速度。不会再修改的函数公共框架和公共类编译生成静态库。gcc的编译流程分为4步