C语言基础

一、第一个程序

#include <stdio.h>
程序员所编写的代码并不是标准C代码,需要一段程序对它进行翻译标准的C代码,负责翻译的程序叫做预处理器,翻译的过程叫做预处理,被翻译的代码叫做预处理指令,在C语言中以#开头的都是预处理指令

#include 功能是把一个头文件导入到当前文件中
#include <> 从系统指定的目录下导入头文件
#include “” 先从当前目录下导入头文件,如果没有,再从系统指定目录下导入头文件

头文件:.h结尾,里面存储的是一些辅助性的代码,绝大多数都是函数的声明(只是函数的开头)
源文件:.c结尾,里面记录的是功能性的代码
stdio.h主要负责对具有输入输出功能的函数进行说明

int main()
{
    printf("Hello World!\n");
    return 0;
}
C语言以函数为单位管理代码的,一个函数就是一段具有某项功能的代码段。
main函数是程序的入口,有且只有一个
int 是一种数据类型,它表示main的执行结果是一个整数
return 功能有两个:1、结束函数的执行 2、返回一个执行结果给函数的调用者
main函数是由操作系统调用的,因此它的返回值返回给操作系统,反应了该程序是如何结束的,通常有三种情况: 
    正数    出现异常(别人的错误)
    0       一切正常
    负数    出现错误(自己的错误)
    echo $? 查看上一个程序main函数的返回值

二、编译器:

负责把人能看懂的记录代码的文本文件,翻译成计算机能看懂的二进制文件,由预处理器、编译器、链接器组成
gcc是由GNU组织为了编译Linux代码而开发一款免费的编译器,默认采用C89语法标准,-std=gnu99可以设置为C99语法标准
    常用的参数:
        -E  显示预处理的结果
        -c  只编译不链接
        -o	指定编译结果的名字
        -S  生成汇编代码
        -I  指定头文件的加载路径
        -l  指定要使用的代码库 -lm 使用数学库
        -Wall 以严格的标准检查代码,显示更多的警告提醒
        -Werror 把警告当做错误处理
        -std=    指定编译语法标准

三、把C代码变成可执行程序的过程

1、预处理   把源文件翻译成预处理文件
    gcc -E code.c               显示预处理的结果到终端上
    gcc -E code.c -o code.i     生成以.i结尾的预处理文件
2、编译     把预处理文件翻译成汇编文件
    gcc -S code.i       ->code.s 生成以.s结尾的汇编文件
3、汇编     把汇编文件翻译成二进制的目标文件
    gcc -c code.s       ->code.o 生成以.o结尾的目标文件
4、链接     把若干个目标文件合并成一个可执行文件
    gcc a.o b.o c.o ...  ->a.out

四、C文件类型:

.h  头文件
.h.gch  头文件的编译结果,它会被优先使用
.c  源文件
.i  预处理文件
.s  汇编文件
.o  目标文件
.a  静态库文件
.so 共享库文件

五、储存空间的单位:

Bit     比特    一个二进制位,只存储0或1,==计算机存储数据的最小单位==
Byte    字节   八个二进制位,==计算机存储容量的基本单位==
KB      1024字节
MB      1024KB
GB      1024MB
TB      1024GB
PB      1024TB

六、数据类型

1、	数据类型相关:
	内建类型:
	    void、char、short、int、long、float、double     7
	自建类型:
	    struct、union、enum、sizeof                     4
	类型限定符:
	    auto、const、static、volatile、register、extern、typedef、signed、unsigned                                       9
	
	流程控制相关:
	分支:
	    if、else、switch、case、default             5
	循环:
	    for、while、do                              3
	跳转:
	    break、continue、goto、return               4

2、为什么要对数据进行分类:
    1、现实社会中的数据是自带类别的属性
    2、对数据进行分类可以节约存储空间、提高运行效率
C语言中数据分为两大类:==自建==(程序员自己设计的,例如:结构、联合、类)和==内建==(C 语言自带)   
    整型:
        signed 有符号 
            signed char         1      -128~127  
            signed short        2      -32768~32767 
            signed int          4      正负20亿
            signed long         4/8    正负20亿/正负9开头的19位整数
            signed long long    8      正负9开头的19位整数
        unsigned 无符号
            unsigned char       1       0~255
            unsigned short      2       0~65535
            unsigned int        4       0~40亿
            unsigned long       4/8
            unsigned long long  8       0~1开头的20位整数
        注意:sigend不加就代表加
     
        注意:由于定义无符号整数数据时比较麻烦,因此标准库把这些无符号类型重新定义成了以下类型:
        需要包含头文件 stdint.h
        uint8_t uint16_t uint32_t uint64_t
        int8_t  int16_t  int32_t  int64_t 
    浮点型:
        float           4
        double          8
        long double     12/16
        注意:采用科学计数法,二进制数与真实数据之间需要换算,因此计算浮点型数据比整型要慢,因此尽量选择整型使用
        小数点后6有效      
    模拟:
        char字符型 字符其实就是符号或图案,在内存中存储的其实是整数,显示时会根据ASCII码表中对应的关系来显示对应的符号或图案
            0   '\0' 特殊字符
            48  '0'
            65  'A'
            97  'a'
        bool布尔型  C语言中是不可能有真正的布尔类型,因为先有C语言才有的bool类型,stdbool.h对布尔类型进行模拟
            bool true false
可以使用 sizeof() 计算类型的字节数

七、变量与常量

什么是变量:程序运行期间数值可以变化的叫做变量,相当于存放数据的盒子
定义:  类型 变量名;
        int num;
        取名规则:
            1、由数字、字母、下划线组成
            2、不能以数字开头 
            3、不能与C语言关键字(32个)重名,要求默写
            4、见名知意(功能、类型、范围)
        注意:变量的默认值是随机的,为了安全起见,一般初始化为0

变量的输入、输出:
int printf(const char *format, ...);
功能:输出数据
format:双引号包含的格式信息(提示信息+占位符)
...:变量名列表
返回值:输出字符的个数

int scanf(const char *format, ...);
功能:输入数据
format:双引号包含的格式信息(占位符)
...:变量地址列表 
返回值:成功输入变量的个数   
注意:scanf需要的是变量的类型和地址,&变量名 <=> 变量的地址

类型占位符:C语言通过类型占位符来传递变量的类型
%hhd %hd %d %ld %lld
%hhu %hu %u %lu %llu
%f  %lf  %LF

3.14   默认double
3.14f   float

八、格式化输入输出

%nd 显示n个字符宽度,不够则补空格,右对齐
%-nd 显示n个字符宽度,不够则补空格,左对齐
%0nd 显示n个字符宽度,不够则补0
%n.mf 显示n个字符宽度(小数点也算一位),不够则补空格,m表示小数点后的位数(四舍五入)
%g 不显示小数点后多余的0

九、运算符

自变运算符:++/-- 使变量的值自动加、减1
    前自变:++num --num 立即有效
    后自变:num++ num-- 下一条语句才生效
    注意:不要在一行代码中出现多个自变运算符  
     
算术运算符:+ - * / %
    / % 除数不能为0,否则会产生浮点数例外,核心已转储,程序直接挂掉
    整数/整数 结果没有小数点
    
关系运算符:> < >= <= == !=
    比较的结果是0或者1,比较的结果还能继续参与运算
    int num = 0;
    10<num<100 永远为真,与数学的运算规则不同
    if(num = 10)
    if(10 = num)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值