• Linux C语言


    一、基础知识

    (一)冯诺依曼体系

    1、存储器:内存

    存储程序的思想:按照存储器中指令的顺序

    2、存储器的分类

    1)主存:内存(C盘)

    2)外存

    3)寄存器是cpu内部的高速存储器,数目少,速度快,cache在cpu内部,外存和内存(主存)都在CPU外。

    3、程序

    广义:为了实现一个功能设计的工作步骤

    程序:系统可以识别的一组有序指令(二进制),存储在磁盘(硬盘属于外存)上,只有在执行的时候才加载到内存。

    (二)数值表示

    1、数值数据:能够进行数值运算得出确切数值

    非数值数据:不能进行数值运算得出确切数值

     字符数据通过ASCII码转化成二进制编码

    2、二进制、八进制、十进制、十六进制

    1)十六机制:数码123456789abcdef

    2)十六进制前缀0x

    3、原码、反码、补码

    1)正数的原码、补码、反码等于他本身

    2)负数的原码符号位是1,其余位不变

    负数的补码的符号位是1,其余位按位取反

    负数的反码符号位是1,其余位按位取反,末尾加一

    (三)程序的编译和调试

    1、GCC编译器

    2、编译文件是否正确

    1)gcc test.c -o test编译是否正确

    2)gcc test.c -o test -Wall:如果语法有不规范的,作为一个展示

    3)./test执行一个文件

    3、程序调试

     %s    __FILE__ 显示文件名

     %s   __FUNCTION__ main函数

     %d   __LINE__显示行

    5、一个程序包括数据结构和算法

    二、C语言数据类型

    (一)bool类型

    1、bool:非零(true),零(false)

    2、需要引入头文件

    #include

    3、举例

     

    4、由于bool使用频率高,所以去除头文件,加上_Bool这样一个数据类型

    5、用数据类型_Bool,则变量只能赋值数据,不能赋值true/false

    如果需要true/false就要用带宏的形式的头文件

    #define 1 true

    (二)char类型

     字符型数据是不具有计算能力的文字数据类型

    ch用%d来打印字符对应的ASCII码,用%c来打印字符。

    (三)整型

    (四)浮点型

    float:%f

    double:%lf

     (五)强制类型转换

    强制数据类型转换(一般是高级转为低级,可能会损失精度)

    1、显示转化

    2、隐式转换

    三、C语言常用命令

    1、查看ASCLL码表

    man ASCII

    2、查看字符长度

    3、查看头文件内容

    例:vi /usr/include/limits.h

    查看不同数据类型表示的范围

    使用头文件:

    #include

    4、常用打印

    1)整数:

    %d十进制

    %x十六进制

    %o八进制

    %#x:打印以0x开头的十六进制

    2)浮点型

    %f  float

    %lf double

    3)字符型%c

    4)科学计数法%e

    5)字符串%s

    6)地址%p

    5、结束程序运行ctrl+C

    6、scanf的用法

    scanf("%d",&A);

    千万不要有\n!

    7、同时打开两段代码

    命令:

    :vsp 要打开的文件夹

    8、查函数手册man +函数

    例:man putchar

    四、常量-整型、浮点、指数常量

    常量是指在程序运行期间数值不发生变化的数据,整型常量就是整数

    (一)整数

    1、整数在赋值时,只有八进制、十进制和十六进制形式

    2、举例

    (二)浮点数(实数)

    一般含有小数,只有十进制,单精度和双精度,一般形式和指数形式

    1、举例

    小数由于精度太小,默认为0

    (三)字符常量

    可以把字符常量看作一个字节的正整数(每一个字符都对应一个ASCII码数值)。

    1、常用的字符

    2、字符型常量既可以用%c打印字符,也可以用%d打印ASCII对应的正整数

    3、大写字母和小写字母相差32,小写=大写+32/‘ ’

    4、小写c=‘A’+2+‘  ’

    5、字符0-9

    6、字符和数字相差48

    数字2=字符2-48

    (四)字符串常量(有一个隐含字符,以\0结尾)

    1、字符串以\0结尾

    “A”=‘A’+‘\0’

    2、举例

    3、字符串数组用char数据类型定义

    (五)标识常量

    1、宏是原样替代不是运算

    如果想要做计算,要加上括号

    2、宏定义格式 #define ONE 1(没有;)

    3、如果行太长,行尾用\续行

    #define ABC jjdiednifhiof\

    disnclisa

    五、变量

    (一)概述

    1、变量名由字母、数字、下划线组成

    2、不能以数字开头,不能和C的关键字重名

    3、在程序运行时,变量所占的内存空间,由变量的数据类型决定

    4、变量在内存中的首地址,称为变量的地址

    5、变量的一般格式:

    存储类型 数据类型 变量名

    存储类型是关键词auto(默认)、register、static和extern

    六、变量的存储类型

    (一)auto变量

    只能在某个程序范围内使用,即局部变量,通常在函数体内或函数的复合语句之中。默认是一个随机的值。

    1)局部变量,第二个输出报错

    2)一般来说auto是省略的

    (二)register寄存器型

    将变量放入寄存器,这样可以加快程序的运行速度

    1)放到处理器内部

    2)如果申请不到就使用一般内存,同auto

    3)在程序运行时,变量都调入处理器使用,如果频繁访问一个变量,可直接用register定义在处理器内部的寄存器中

    4)由于寄存器数量有限,所以将变量放在寄存器可能反而会降低运行速度

    5)寄存器存储类型,不能用&来查看地址

    (三)全局变量static/extern

    1、既可以修饰局部变量,也可以修饰全局变量。既可以在函数体内,也可以在函数体外(默认是0)。

    2、static的特点

    1)在内存中以固定地址存放,而不是以堆栈的形式存放。

    2)只要程序没结束,就不会随着说明它的程序段消失而结束,而且下次调用该函数,该存储类型修饰的变量不在重新说明,而且保留上次存在的值。

    3、auto和static区别例子

    auto:

    一次循环之后,a被销毁

    static:

    在一次循环后a不会被销毁,即使有命令也不会重新被赋值。

    4、extern(全局变量,能被其他文件的程序访问)举例

    5、1、2说明static和extern都是修饰全局,区别在于static是根据程序运行而存在,不能在其他文件使用,而extern修饰的全局变量可以在不同文件之间使用。

    注意事项

    1、可以直接给bool类型的变量赋一个true/false。

    2、省略头文件用_Bool定义bool类型,则只能给变量赋数值,不能再赋true/false。

    3、ch用%d来打印字符对应的ASCII码,用%c来打印字符。

    4、%#x:打印以0x开头的十六进制

    5、可以把字符常量看作一个字节的正整数(每一个字符都对应一个ASCII码数值)。

    注意要用引号引起来:int a='F';

    6、宏是原样替代不是运算

    7、寄存器存储类型,不能用&来查看地址

    8、再次调用含有static类型的变量的函数,该存储类型修饰的变量不在重新说明,而且保留上次存在的值,在一次循环后a不会被销毁,即使有命令也不会重新被赋值。

    9、static和extern都是修饰全局,区别在于static是根据程序运行而存在,不能在其他文件使用,而extern修饰的全局变量可以在不同文件之间使用。

  • 相关阅读:
    头歌计算机组成原理汉字字库存储芯片扩展实验
    网络丢包,网络延迟?这款神器帮你搞定所有!
    一分钟了解 ChatGPT 语音对话
    【六袆 - 前端】JavaScript学习;JavaScript面试题;坐地铁,坐公交,打DD的时候刷一刷
    利用Vue+Echarts完成可视化任务
    MySQL进阶实战8,分区表详解
    uni-app使用阿里巴巴图标库icon详细步骤--避免踩坑
    谷歌开源芯片 180 纳米制造工艺
    【LeetCode】54. 螺旋矩阵
    c++ SFML 连接ftp
  • 原文地址:https://blog.csdn.net/m0_57508000/article/details/133888958