C语言入门知识(持续更新中)

C语言介绍:

于1971-1973年诞生于美国贝尔实验室,由研究员丹尼斯.里奇、肯.汤普逊主创,它是一种专门编写操作系统的语言,由于速度非常快也常用于编写项目的核心代码、底层的数据结构、算法等。
由于它第一个高级编程语言,后期的编程语言在设计时很多都借鉴了C语言,所以C语言也被称为语言之母,学习好C语言可以为学习其它众多编程语言打开基础。
优点:
1、语法简单,只有32个关键字。
2、能直接控制硬件,可以编写硬件驱动,进行嵌入式、单片机开发。
3、运行速度快,可以媲美汇编的运行速度。
缺点:
1、检查不严格,很容易出现一些错误。
2、语法上存在一些缺陷。

第一个C语言代码:
#include <stdio.h>
int main(int argc,const char* argv[])
{
    printf("Hello World!\n");
    return 0;
}

1、程序员所编写的代码不是标准的C代码,需要一段程序翻译成标准的C代码,负责翻译的程序叫预处理器,被翻译的代码叫预处理指令,所有以#开头的都是预处理指令。
#include <> 的功能是导入一个头文件。
2、C语言的代码一般写在两种文件中
.h头文件:辅助代码,一般有宏常量、宏函数、结构、联合、枚举全局变量的声明、函数声明。

.c源文件:里面记录的都是功能代码。
3、C语言标准委员会为C语言以函数形式提供一些基础功能,这些函数被封装在libc.so库文件中,并附带了一些头文件对这些函数进行了说明,stdio.h就是其中之一,该文件对库中的输入输入函数进行了说明。
stdio.h stardand input output head
4、C语言中以函数为单位管理代码,一个函数就一段功能代码,而main函数是所有函数的执行入口,有且只能有一个。
5、main函数可以附带一些参数,由程序的者提供。**
6、C语言使用大括号划分管理区别,在大括号中的代码都属于同一个管理区域。
8、C语言中使用;作为结束标志,因此可以随意换行。
9、printf/scanf C标准库的用于输入、输出的函数。
10、使用printf输出数据时,有一些特殊意义的字符,它们被称为转义字符:
\t 制表符
\b 退格
\r 回到行首
\n 换行
\a 铃响
\ 显示一个
%% 显示一个%
11、return 语句有两项功能:
结束函数的执行
返回一个数据给调用者
12、main函数的返回值反映程序的结束状态
正值 程序出现异常,环境原因导致程序无法继续执行。
0 一切正常
负值 程序出现错误,代码本身出现问题,计算出果与预期不符。
main函数其实是被操作系统调用,它的返回也就被操作系统获取,记录日志文件中。
echo $? 获取上一个程序的结束状态.

编译器:

编译器就是负责把人类能看懂的代码,翻译成计算机能理解的二进制指令,它由预处理、编译器、汇编器、连接器组成。
gcc编译器把C代码翻译成可执行程序的过程:
1、预处理
gcc -E xxx.c 把预处理的结束显示到屏幕
gcc -E xxx.c -o xxx.i 把预处理的结果存储到文件中
2、编译
gcc -S xxx.i 把预处理后的结果翻译成汇编指令,会生成以.s结尾的汇编文件。
3、汇编
gcc -c xxx.s 把汇编指令翻译成二进制指令,会生成以.o结尾的目标文件。
4、链接
gcc a.o b.o c.o … 把若干个目标文件合并成一个可执行文件,默认生成的可执行文件叫a.out,在终端里使用./a.out执行可执行文件。
gcc编译器常用的参数:
-E 预处理
-S 编译生成汇编代码
-c 汇编出目标文件
-o 设置编译结果的名字
-Wall 显示所有的警告信息
-Werror 把警告信息转成错误信息
-l 使用库文件,m就是数学库
-std=<语法标准> 一般默认是C89语法标准
-std=gnu99
C语言的文件类型:
.h 头文件
.gch 头文件的编译结果,会优于.h文件调用,建议直接删除
.c 源文件
.i 预处理文件
.s 汇编文件
.o 目标文件
.so 共享库文件(动态库)
.a 静态库文件

C语言数据类型:

整型:
    有符号整型:它的最高位的二进制用于表示正负责符号,0代表正数,1代表负责。
        signed char         1       [-128,127]
        signed short        2       [-32768,32767]
        signed int          4       2开头的10位整数
        signed long         4/8
        signed long long    8       9开头的19位整数
        注意:signed 不加就代表加
无符号整型:它的所有二进制位都用于表示数据,只能表示正数。
        unsigned char       1       [0,255]
        unsigned short      2       [0,65535]
        unsigned int        4       [0,4开头的10位整数]
        unsigned long       4/8 ()argggcc
        unsigned long long  4/8     [0,1开头的20位整数]
        注意:unsigned 关键字不能省略,但为了方便使用C标准库的 stdint.h 中对无符号类型进行的重定义,分别是:
        uint8_t、uint16_t、uint32_t、uint64_t
浮点型:
    单精度:float   4
    双精度:double  8
    高精度:long double 12/16
    浮点型采用科学计数法存储,符号位+指数+尾数,它们的运算速度比整型慢,因此在编程时尽量使用整数数据。
    注意:默认小数点后六位有效。
模拟:
    char 字符型,字符就是符号或图案,在但计算机中只能整数形式存储,当显示时再根据ASCII码表中的对应关系,显示相应的符号或图案。
        'A' 65
        'a' 97
        '0' 48
        '\0' 0
    bool 布尔型,先发明的C语言后出现的布尔类型,因此在C语言中没有设计真正的布尔类型,包含stdbool.h头文件后才可以使用bool、true、false。
变量:
在程序运算过程中值可以发生变化的数据,相当于存储数据的容器。
定义:类型 名字;
    int num;
    注意:变量的默认值是不确定的,有特殊用处的变量要初始化0(计算、求和)。
使用:
    赋值 num = 10;
    参与运算 num * 3.14
取名规则:
    1、由数字、字母、下划线组成。
    2、不能以数字开头。
    3、不能与关键字重名。
    4、见名知义。
变量的输出:
    printf/scanf使用占位符来表示变量的数据类型:
        %hhd %hd %d %ld %lld
        %hhu %hu %u %lu %llu
        %f %lf %LF 
        %c
    int printf(const char *format, ...);
    功能:输出数据
    format:占位符+提示信息
    ...:若干个变量名
    返回值:输出的字符个数
    练习1:定义各类型的变量并初始化,使用printf输入变量的值。
变量的输入:
    int scanf(const char *format, ...);
    功能:从终端接收数据
    format:占位符
    ...:若干个变量的地址,&变量名 计算出变量的地址
    返回值:成功获取数据的变量的个数
    练习2:定义各类型的变量,使用scanf从终端接收数据,然后使用printf显示。
常量:
在程序运行过程中不能变化的数据叫常量。
字面值常量的类型:
    100 int 类型
    100u unsigned int 类型
    100l long 类型
    100ll long 类型
    100lu unsigned long 类型
    100llu unsigned long 类型
    3.14 double 类型
    3.14f float 类型
    3.14F long double 类型
格式化输入:
整型数据:
    %nd 显示n字符宽度,右对齐,数据的宽度不够则补空格,如果实际数据超出n个字符则按实际情况显示。
    %0nd 数据的宽度不够则补0
    %-nd 左对齐显示
浮点型数据:
    %.mf 小数点后保留m位
    %n.mf 显示n字符宽度且小数点后保存m位,小数点也占一位宽度。
    %g 不显示多余的零
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值