C语言基础学习一阶段总结

一、编程环境

1、编程环境

采用虚拟机  linuxos(ubuntu)

2、Linux目录结构

/:表示根目录:linuxos的顶层目录,一切都从他开始,都在他之下

用户所在的路径是家目录(/home/linux64)

路径分为绝对路径和相对路径:

绝对路径:从根目录开始的路径       相对路径:相对于目前所在的路径

3、Linux常用命令

命令格式:命令 [选项] [参数]

注意:

  • 【】表示可以省略 【选项】 :功能 【参数】:操作的对象
  •   以上三者之间必须以空格隔开 

1、终端

ctrl+alt+t:打开一个目录为家目录的终端

ctrl+shift+n:打开一个与当前路径相同的终端

 2、清屏

Clear

Ctrl+l

3、 ls

Ls 路径:显示路径下的内容

Ls -a:查看当前路径下的所有文件(包含隐藏文件)

Ls -l:显示当前路径下的内容的详细属性

Ls -la:显示当前路径下的所有内容的详细属性

Ls Desktop:打印当前路径下的Desktop底下的内容

4、创建与删除 

 touch 文件名/文件路径:新建文件,一次可以创建多个

rm 文件名/文件路径:删除文件,一次可以删除多个

mkdir 文件夹名/文件夹路径:创建文件夹,可以同时创建多个

rmdir 文件名/文件路径:删除空文件夹,一次可以删除多个

rm -rf:删除文件夹(空与非空皆可删除),不提示,直接删除

rm -ri:删除文件夹,并挨个提问是否删除

5、 切换路径

cd 路径:切换路径(绝对路径/相对路径皆可)

cd :直接返回家目录

cd -:回到上一次操作的目录下

cp 源(文件/ -r 文件夹) 目标文件夹 

6、mv

移动:mv 源文件/源文件夹 目标文件夹

重命名:mv 原来的名字 现在的名字

 4、vim编辑器

Vim 文件名

如果文件存在:直接打开,进行编辑

如果文件不存在:创建文件,并打开编辑

三种模式

Vim 文件名 如果文件存在:直接打开,进行编辑 如果文件不存在:创建文件,并打开编辑

 命令行模式:

命令行模式----------插入模式: i

命令行模式----------底行模式: shift+:

插入模式:

插入模式--------------命令行模式:esc

插入模式--------------底行模式:esc+shfit+:

底行模式:

底行模式-------------命令行模式:

esc 底行模式-------------插入模式:esc+i

底行模式:

w:保存

q:退出

Wq:保存并退出

q!:强制退出

Wq!:强制保存退出

Set nu:显示行号

Set nonu:撤销行号

命令行模式:

yy:复制

Nyy:复制n行

P:粘贴

dd:剪切(不粘贴:删除)

ndd:剪切n行(删除n行)

u:撤销

Ctrl+r:反撤销

5、gcc编译器 

 1、gcc 文件名 gcc hello.c

//默认生成可执行文件a.out

2、gcc 文件名 -o 可执行文件名 gcc hello.c -o hello

//生成指定的可执行文件hello 执行可执行文件:./可执行文件名

二、计算机的数据表示

 计算机中数据分为数值数据和非数值数据,保存形式为二进制,非数值数据包括字符

ASCII码表:规定了每一个字符在计算机中对应的是哪八位二进制数

What is ascii code

 1、进制转换

  • 其他进制转十进制:对应的位数乘以对应的指数次幂
  • 十进制转其他进制:除以其他进制倒取余
  • 二进制和八进制相互转换:

0---------------------000

1---------------------001

2---------------------010

3---------------------011

4---------------------100

5---------------------101

6---------------------110

7---------------------111

  • 二进制和十六进制相互转换:

0-----------------0000

1-----------------0001

2-----------------0010

3-----------------0011

4-----------------0100

5-----------------0101

6-----------------0110

7-----------------0111

8-----------------1000

9-----------------1001

A-----------------1010

B-----------------1011

C-----------------1100

D-----------------1101

E-----------------1110

F-----------------1111

2、基本数据类型

关键字:系统预先定义好的,有特殊含义的,并且都是小写。不能重新定义!(32个)

数据类型:char、short、int、long、float、double、struct、enum、union、void

控制语句:if、else、while、do、for、switch、case、break、continue、default、goto、

存储类型:auto、static、extern、register

const:只读

return:返回函数

Signed:有符号数   Unsigned:无符号数

Sizeof: 计算所占内存空间的大小:(字节)//sizeof(数据类型),sizeof(变量名)

typedef: 给已有的数据类型起别名

volatile: 防止编译器优化

标识符:程序员自己定义的,一般用来定义变量名,函数名,类型名

1、由数字、字母、下划线构成

2、第一个不能为数字

3、不能和关键字重名 建议:定义变量(见名知意)

3、有符号数和无符号数:

unsigned:无符号数:只有正数

signed:有符号数:有正数,有负数:以补码的形式进行存储

有符号数有符号位:最高位来表示符号位:0表示正数1表示负数

注意:正数的原码,反码,补码相同

补码的补码就是原码

三、数据类型

1、基本数据类型

  1. 整型    int    short    long
  2. 浮点型     float    double
  3. 字符型     转义字符:\n,\123,\x12    非转义字符:'a','b'

2、复合数据类型

  • 数组
  • 指针
  • 函数
  • 结构体
  • 共用体
  • 枚举

1、指针 

什么是指针:指针是一种保存地址(&i)的数据类型
定义指针:int * pi;   pi=&i; 
定义指向指针的指针:int  **ppi;   ppi=π

2、函数

1、自定义函数

1、函数声明

返回值类型 函数名(形式参数列表);

注意有分号

2、函数定义

返回值类型 函数名(形式参数列表)

{

        函数体;

}

3、函数调用

变量名=函数名(实际参数列表);

2、函数和指针关联

可以给函数传一个整型、字符型、浮点型的数据,也可以给函数传一个地址

交换数据地址:

#include <stdio.h>

void swap(int *pa,int *pb);
void swap(int *pa,int *pb)
{
    int temp = 0;
    pa = temp;
    pb = pa;
    pb = temp;
}

int main(void)
{
    int a = 5,b = 6;
    printf("swap before a = %d,b = %d",a,b);
    swap(&a,&b);
    printf("swap after a = %d,b = %d",a,b);
    return 0;
}

 3、数组

1、一维数组

每个元素的数据类型 数组名[元素的个数];

//定义一个长度为5的float数组

float scores[5]={0},{0}为初始化,{}内可输入每个数组的值

2、二维数组

每个元素的数据类型 数组名[元素的个数,此元素为数组][每个元素数组中的元素个数]

//定义一个长度为3的数组,该数组中的每个元素又是(长度为4的float)一个数组

float arr[3][4]={1,2,3,4}

3、数组指针

指针与一维数组的关系

 指针与二维数组的关系

 4、指针数组

指针(一维)数组

 指针(二维)数组

 定义一个长度为5的数组,该数组中的每个元素是char *

 

 5、指针数组和数组指针的区别

 

3、数据类型的转换

隐式转换:(范围小到范围大)

int+float ----->float

unsigned+signed--->unsigned

强制转换:范围大到范围小

#include <stdio.h>
int main(void)
{
float f=12.34;
int i=0;
i=(int)f; //(类型名)变量名 对该变量进行强制转换
printf("i=%d\n",i);
return 0;
}

 四、三大结构

  • 顺序结构
  • 选择结构
  • 循环结构

1、顺序结构(标准输入输出函数)

1、scanf()函数

scanf("格式化符",地址列表)

2、printf()函数

printf("字符串+格式化符",变量名列表)

2、选择结构

1、单分支结构

if(条件为真)

{

语句

}

2、双分支结构

if(条件为真)
{
语句1;
}else
{
语句2;
}

3、 多分支选择结构

swich()

{

        case 1:   

        break;

        case 2:

        break;

        defalt:

}

 3、循环结构

1、whlie

(1).循环的初始条件
while((2).条件判断)
{
(4).循环体
(3).条件更新
}

 2、for

for((1).循环初始条件(多个就逗号隔开);(2).条件判断;(3).条件更新(多个条件逗号隔开))
{
(4).循环体
}

3、 do while

(1).循环的初始条件
do
{
(4).循环体
(3).条件更新
}while((2).条件判断);

五、相关运算符

优先级:单算移(左移<<,右移>>)关与(&),异(异或^)或(或 |)逻条赋

赋值运算符

=:右边的值赋给左边

算数运算符

 +,-,*,/,%

关系运算符

 ==,!=,<=,>=

逻辑运算符

 &&、||、!,与或非

条件运算符

a>b?a:b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值