C基础笔记

编译型语言:  即 将整个程序 需要预先 编程 成 可执行的二进制指令 才能被计算机执行 
    运行效率高, 一次编译  可以一直使用  
 
 解释型语言:  即 将程序  逐行解释 为 指定的 二进制指令 交由计算机执行
    即写程序  和 运行 可以同步进行  节省编译时间 
    每次程序的运行 都需要同步解释, 运行效率不高 
    
编程语言的组成: C语言 
    1. 词法符号  
        关键字:  由编译器预先 定义的有特殊功能的单词短语
        运算符:  表示某种运算符符号  + - * / 
        标识符:  由编程者 自己定义的 名字 
        分隔符:  用于排版,方便阅读,美观, 但对编译没有任何影响 
        标点符号:一些有特定位置 特定情况使用的标点符号,参与编译的
                    严格按照规范使用  ;
    2. 结构语法     只能实现在函数中  
        顺序结构
        分支结构
        循环结构

C语言编译器:
    一个软件, 可以将C源码,编译为 可执行机器码 
编译标准:
    C98   C99标准

C库:  由编译器自带的一些 有前辈大师编写 一些常用的功能函数 

Ubuntu16.04 虚拟机的使用:
    图形界面  与 Windows 类似 
    终端界面  字符界面 
终端: 一个链接计算机的 命令窗口  
    ctrl + alt + t   打开一个新终端窗口
    ctrl +shift + t   在同一个窗口中打开新终端 
    
    在一个窗口中切换终端 
    alt + 1  切换到窗口1
    alt + 2  切换到窗口2
    ....
    
Linux系统:  一个开源 免费的 多任务 多用户的 操作系统 
    可移植性好   可以裁剪 
    GNU组织, GPL协议 开源共享协议  
    Android 是一个Linux的应用程序   
    
桌面右键  新建终端  
    终端提示符  表示可以输入命令 
    xxx@xxx-pc:~$
  用户名@主机名: ~ 当前工作目录   ~ 家目录  $ 表示普通用户   # 管理员 root 

终端清屏命令  clear 
快捷键 ctrl + l 

ls 命令  查看当前工作目录 中的文件或目录 
ls -l    查看目录的详细内容 

-rwxrwxr-x  1 xxx xxx  8704 7月  11 09:17 a.out
文件类型  - 普通文件
          d 目录 
rwxrwxr-x 文件权限  分3个部分  rwx对所有者 rwx对所属组  对其他人r-x           
rw-r--r-- == 110 100 100 == 0644  文件权限码 
          
xxx 第一个xxx  文件的所有者
8704  文件的大小 单位字节 
7月  11 09:17 最后一次修改文件的时间 

cd 命令  进入目录 
cd 目录名   进入该目录 
cd ..   返回上一级目录 

删除文件和目录  
rm 文件或目录名  -rf 
递归删除文件或目录中的所有内容 

创建目录 
    mkdir  目录名

mkdir c基础
删除目录  
    rmdir 空目录名  

创建一个普通文件
    touch 普通文件名  

编辑文本文件 
    1. 使用图形界面编辑 
    gedit 文件名  
    使用图形界面记事本编写C代码

    2. vim 字符界面 文本编辑器 来编写C代码 
    vim 文件名        打开文本文件   若该文件不存在 将会自动创建  

vim 命令模式:  默认进入vim 就是命令模式 
    该模式下  键盘输入的都认为是命令 
dd     剪切一行  光标所在行 
5dd    剪切5行   光标所在行以及后边4行
p      粘贴      在光标下一行 粘贴 
yy     复制光标所在行
5yy    复制光标所在行以及后边4行
x      删除光标所在字符
u      撤回上一次操作  

进入 插入模式 
命令模式下  输入  i   o   a  
    i  进入插入模式 从光标位置前开始插入
    o  进入插入模式 从光标下新建一行并从该行开头插入
    a  进入插入模式 从光标位置后开始插入

退出插入模式 到 命令模式 
esc  

进入底行模式  该模式下 主要是操作文件 保存  退出 等 
:wq     保存退出 
:q!     强制退出 不保存 
:w      仅保存
:wqa    保存并退出所有文件  
多文件编辑   vim 1.c hello.c -o  -o水平切分窗口   -O 垂直切分窗口

第一个C代码:
vim hello.c  

#include <stdio.h>

int main()
{
    printf("hello world\n");
    return 0;
}

编译C源码文件  
gcc  hello.c  
默认生成一个 a.out文件  就是该工程的可执行文件 

运行可执行文件 
./a.out 

C语言对标点符号 要求严格  区分大小写中英文符号等 

gcc 编译时 重新命名 输出 可执行文件的名字 
gcc hello.c -o hello

Linux重命名文件  
mv 命令 可以移动或重命名文件
mv hello.c 2.c  
修改hello.c  为 2.c 

C语言关键字:32个
1.类型相关的 
    基本数据类型: char  double  float  int  long   short  signed  unsighed  void 
    构造数据类型: struct  union  enum    
2.存储相关 
    auto  const   extern   register   static 
3.结构相关 
    break  case  continue  default  do  while if  else
    for    goto  return  switch
4.特殊功能 
    sizeof   typedef   volatile 

计算机中 数据的表示
    数值数据(基本数据类型)       10  3.5  -5   即一个数 
    非数值型数据   自然语言   "hello world"  "你好" "123"  "13727045125"
            ASCII 英文字符 及 符号 和 控制命令 的 编码 
        C语言中    使用"" 引用其他的数据  称字符串 
        图片   语音  ....
        
数据存储与表示: 
计算机只能处理与存储 0和1类型数据   最小单位 bit 0-1  内存最小单位是字节 1Byte=8bit
    数值数据 二进制 与 十进制 
    
进制的表示:  0b 二进制   默认10进制  8进制  0o   16进制 0x 
    123 十进制数  逢十进一
            数码 0 1 2 3 4 5 6 7 8 9
    1 * 10 ^ 2 + 2 * 10 ^ 1 + 3 * 10 ^ 0 = 123
    
    0b1011 二进制   逢二进一
            数码 0 1 
    0b1011 = 1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 1 *2^0
         = 11 十进制
    0
    1
    10
    11
    100
    ...
    
    10进制转 2进制 算法
        123     余数   == 0b111 1011   == 0x7b
     /2   61 --- 1   二进制低位
    /2   30 --- 1
    /2   15 --- 0
    /2    7 --- 1
    /2    3 --- 1
    /2    1 --- 1
    /2    0 --- 1   二进制高位
    
    16进制  逢16进一   半斤八两 
            数码  0-9 A(10) B(11) C(12) D(13) E(14) F(15)
    
        123      0x7b
    /16   7  ---- 11
    /16   0  ---- 7 
    
进制 方便人 阅读 编写 程序  
    8进制  

面试题:   有100瓶药水  有一瓶毒药  药效发作时间需要1小时  
    现有 8只 小白鼠  如何操作  可以在 最短的时间内找到这瓶毒药
    假设  除毒药发作时间外 都不需要时间

C语言中,对数 设计类型:
数据类型:   即 对 不同类型的数 的 表示 和 存储 
    整数类型  精确类型 
    char   字符型    8bit   1字节  存储这个数   0-255  共256个数
    short  半字类型  16bit  2字节               0-2^16-1 = 65535
    int    整型      32bit  4字节               0-2^32-1 = 4,294,967,295
    long   长整型    64bit  8字节               0-2^64-1 = 

int  与 long 存储大小   
    一些8位单片机 51   int 2字节  long  4字节 
    一些32位单片机  stm32 或 LinuxC   int 4字节  long 8字节 

    signed         有符号类型    不写默认是有符号类型 
    unsigned     无符号类型

    signed    char  有符号字符型   -128 ~ + 127
    unsighed  char  无符号字符型 

有符号与无符号的区别 
    负数如何表示   -2 -10  -1 
    
    有符号数  最高bit 作为符号位  0 正数 1 负数 
    signed    char   -128 ~ 0  ~ +127
    补码形式 存储有符号类型  
    
    LinuxC中:
        不写 signed  默认 都是有符号   gcc  
    单片机C中   arm gcc     
        char 不写  默认无符号类型 
        除char类型 外  其他不写signed  默认是有符号类型 
    
    
最高位 为 符号位   其余位 存储值  若值是负数  补码 
负数值 = 补码取反 +1 

强类型语言: 
    C语言:  任何变量或存储空间 必要先定义(给定类型 ) 然后才能使用 
        且 使用过程中 类型不不能更改 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值