提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

一、思维导图

在这里插入图片描述

二、linux基础

1.常用命令

常用命令:
ls (查看目录下的文件)		mkdir(创建空目录)
touch(创建空文件)			
pwd(查看绝对路径)			chmod(强制修改文件文档权限)
Sudo(零时赋予管理员权限) 	cd(打开目录)

目录:最开始的‘/’ == 根目录
‘~’ ==家目录
一个点 ‘.’ ==当前目录
两个点 ‘··’ ==上一目录
/mnt/hgfs/AAA/yuan == 绝对路径
./yuan ==相对路径
linux文件共享目录:/mnt/hgfs

2.vim编辑器

Vim常用的一些配置
1.安装中文输入法,详情请查看CSDN牛逼大佬的文章

2.显示行数
永久显示行数:  终端输入vim ~/.vimrc
		      里面是一个空白文档,
在里面插入内容:set nu=====>>保存退出即可
临时显示行数:set nu

3.自动缩进
在配置文件输入

:set tabstop=4
:set softtabstop=4
:set shiftwidth=4
:set expandtab

当然也可以直接白嫖大佬写好的配置文件让你的编程体验爽到飞起

在这里插入图片描述

Vim  文件名				进入vim编辑器的命令模式
编辑器下存在两种模式
1.命令模式:
	常用命令:
	Shift+:型命令,底行模式
	w					保存
	q					退出
	wq					保存并退出
	x					保存并退出
	q!					强制退出
	wq!				强制保存并退出
	%s/str1/str2/g		将str1替换成str2
	
	行操作
	yy			复制行
	nyy			复制n行
	p		    	咱贴
	dd			删除
	ndd			删除n行
	u			撤销一步
	按下i、a、o进入插入模式
2.插入模式
按esc退出到命令模式

3.gcc编辑器

gcc 编译器
	编译器编译链接的四个步骤
		main.c====>>main.i====>>main.s====>>mian.o====>>main.out
	         预处理		  编译 	      汇编        链接      
	     源文件	   预编译文件  汇编文件	  目标文件	   可执行文件
	
	预处理	:gcc -E main.c -o main.i
	编译	:gcc -S main.i -o main.s
	汇编	:gcc -c main.s  -o test.o
	链接	:gcc  main.o -o main 
	
一步到位命令:gcc mian.c -o main.out    gcc main.out(默认生成a.out)
打开执行文件:./main.out(打开当前目录下的main.out文件)

三、C语言

1.基础

(1).进制

1)	 十进制		decimal			   10
2)	 二进制		binary			   1010
3)	 八进制		octonary		   012
4)十六进制		hexadecimal		   0xc

(2)词法符号

1) 关键字  		编译器内定的,不需要加任何头文件

	C语言中的关键字: 32个
	auto           break           case           char        const    
	continue       default         do             double      else    
	enum           extern          float          for         goto    
	if             int             long           register    return    
	short          signed          sizeof         static      struct    
	switch         typedef         union          unsighed    void    
	volatile       while
2)标识符  		自定义符号,变量(可为字母数字下划线,不能由数字开头)
定义变量:		存储类型	数据类型		变量名
存储类型:
			auto 		自动 由编译器根据定义的位置 自动分配内存位置 
			register    寄存器类型   
			extern  	引用类型   变量不是在当前位置定义的, 用于引用其他位置(在				其	他文件中)定义的一个变量 
			const 	    常量类型   数据存放的位置 在 内存的常量区|代码段
			static      静态类型   数据存放的位置 在 内存的 静态区 
3) 运算符
特殊的运算符——三目运算符(表示非此即彼的关系)
条件表达式?语句1:语句2;
4) 分隔符  		空格 回车 用于代码的 美观 增强可读
5) 标点符号  	参与编译 ,C语言的标点符号有严格要求 

在这里插入图片描述

(3)基本数据类型

1.数据存储

 位   1bit    ==0|1
字节   bytes  == 8bit
千字节    kb  ==1024byte
兆字节    Mb  ==1024kb
		   ······

2.基本数据类型

	1)整型(精确)
		bool		    1bit      0|1
		char			1byte     
		short		    2byte
		int			    4byte
		long			8byte
	
	2)浮点型(非精确)
		float			4byte     6	(有效数据位,精确到几位)
		double			8byte     15(有效数据位,精确到几位)

要点:ASCLL码
要记住,’0’=48 ‘A’=65 ‘a’=97 空字符=0
在这里插入图片描述

2.基础语句

(1).注释

1)单行注释			
 //我是单行

2)多行注释			
/*···     我是多行···*/

#if 0
我是多行
为0时注释,为1时执行,非常建议使用这种方式
#endif

(2)输入输出

(基于标准输入/输入c库,stdio.h)
1.输入
	putchar(char);  
	puts(str);
	printf();  
	printf("格式控制字符串",变量等 );	格式化输出
		如:printf("c=%d\n",c);


			格式声明	占位符%+格式字符
			%d : 数据按 10进制 整数方式输出 
			%c : 数据按 字符方式输出 
			%s : 数据按 字符串方式输出 
			%x : 数据按 16进制格式输出
			%o : 数据按 8进制格式输出
			%f : 数据按 浮点数格式输出 
			%e : 数据按 指数格式输出 
			%% : 输出 '%' 字符 
				%.2f(精确小数点后两位)	%-4d(字符宽度为4,左对齐)
				
			转义字符
			\n		换行
			\r		回车
			\0		空字符
			\\      字符'\'
2.输出
	getc(stdin);  //从终端读取一个字符
	gets(); 	  //从终端读取字符串   该函数不是安全的 
	fgets();	  //从终端读取字符串  以\n 作为结束符  
	scanf();      // 格式化输入

(3)选择语句

if()语句1;
	else ()语句2

if()语句1;
	else if()语句2;
	else if()语句3;
   ······
   
switch(n)//多分支语句,执行多选一操作
{
	case 1:  语句块1 ; break;
	case 2:  语句块2 ; break;
	case 3:  语句块3 ; break;
			...
	default:  语句块n;
}

switch(n)//多分支语句,若n=2,则执行语句2,语句3
{
	case 1:  语句块1 ; break;
	case 2:  语句块2 ; 
	case 3:  语句块3 ; 
	default:  语句块4;
}

(4)循环语句

1)结构:
	do
	{语句块;}
	while(条件表达式);
	
	while(条件表达式)
	{语句块;}
	
	for( 循环量的初始化;循环条件; 循环递推)
		{循环体语句块;}
		
2)循环控制语句: 	
	break;   // 跳出循环, 提前结束整个循环 
	continue;// 继续   本次循环的后续 步骤不在执行, 重新开始新的循环
	return;  // 结束函数
	goto;    // 跳转到指定 位置继续执行 

3.数组

(1)一维数组

结构
		存储类型  元素数据类型  变量名[元素个数];
	定义及初始化
		int arr1[3]={0,1,2};	//全部赋初值 
		int arr2[]={0,1,2};		//全部赋初值时,可省略元素个数  	 
		int arr3[3]={};			//初值为空,即全部赋值为0
		int arr4[3]={1};		//部分赋值,即未被赋值的自动赋值为0
		
		char str1[]="hello";
		char str2[]={'h','e','l','l',o'};
		char str3[]={'h','e','l','l',o','\0'};
		str1==str3;他们均为字符串数组,字符串数组结尾必须有'\0'
		
	字符串处理函数(基于string.h头文件)
			#include<stdio.h>
			#include<string.h>
			char str1[]="hello",str2[]="Hello",str3[]="hello",str4[10];
			int main()
			{
				printf("%d\n",strlen(str1));		//求字符串长度
				printf("%d\n",strcmp(str1,str3));	//比较字符串
				printf("%d\n",strcmp(str1,str2));
				printf("%d\n",strcmp(str2,str1));
				printf("%s\n",strcat(str2,str1));	//字符串追加
				printf("%s\n",strcpy(str4,str1));	//字符串复制
				return 0;
			}

(2)二维数组

	二维数组的定义和表示: 
		int arr[2][5];
		存储类型	基本数据类型  数组名[行数][列数];

	二维数组的初始化:
		char str[2][10]={"hello","world"};
		int arr[2][5] = {{1,2,3,4,5} ,{ 10,9,8,7,6}};
				          arr[0]			arr[1]

4.函数

#include<stdio.h>
static int num=4//全局变量,静态区、全局区
int fun1_find_max(int a,int b,intc)		//形式参数
{
	int max,count=4;				//局部变量
	if(a>b&&a>c)max=a;
	else if(b>a&&b>c)max=b;
	else if(c>a&&c>b)max=b;
	
	return max;					//返回值,max即为整个函数的值
}

int main(){
	int max;
	max=fun1_find_max(15,7,9);		//实际参数不需要写数据类型
	printf("max=%d\n",max);
	printf("num=%d\n",num);		//
	printf("count=%d\n",count);		//count未定义
	return 0;
}

总结

linux C语言其实就是在linux系统下编写C代码,使用vim或者vi编辑器编写代码,再使用gcc编译器编译链接,使用起来更偏向底层,若你使用集成开发环境编写代码,是隐藏了底层逻辑的。
本章节重点内容还是C语言基础,linux只是一个工具而已。数据类型,基本的语句等等,有几个比较容易忽视的知识点就是,全局变量、局部变量,主要考察数据存储类型,因为平时写代码都不会定义数据存储类型,所以在这一块还要深入学习。
当然这只是linuxC语言基础,后期学习的指针、结构体、链表才是重点以及难点。在这个一提到程序员就能与“中年危机”挂钩的时代,唯有终生学习才能立于不败之地,能何况是小白白呢,“路漫漫其修远兮,吾将上下而求索”。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐