本文主要简单介绍了C语言的所有概念,为之后的精学打下结构基础
文章目录
如何坚持写csdn
因为事情比较多,其实换个角度想,csdn就是和抖音,小红书,朋友圈一样的东西,有时间就打个文章结构,然后每天填充一些就可以了,这个应该是对待csdn 的态度
gitee 的使用(也许以后会出一个gitee使用的)
用来记录每天的写代码的过程,也是一个记录器
每次看到哦那个小绿点还是很有成就的
真正变成能力的是写了多少代码
当然这个记录器搞得好看一些也舒服一点
分文件,即使添加注释和使用方式
里面也能够打一下自己的目标
有碎片时间就去修改一下
需要学习的方面
1.方面
有哪些方面需要学习呢?
- 语言(注重库文件源代码实现细节,要用准确要求自己)
- 算法和数据结构()
- 操作系统
- 计算机网络
- 其他(暂时我还想不起来)
2.如何去问一个问题
在询问前要问自己三个问题:
- 我的实现思路是什么?
- 我卡在了什么地方?
- 这个问题用了哪些要点,要点之间如何联系起来?
C语言的历史
1.什么是计算机语言
自然语言是人和人交流的工具,机器语言是人和机器交流的工具,人利用计算机语言与计算机交流完成工作
2.我们为什么用C语言?
c语言,擅长底层开发,一部电脑,最底下是硬件,然后要操作硬件,要使用操作系统,操作系统之上是应用软件,硬件和操作系统之间是驱动 。
我们把应用层往下的,操作系统,驱动,硬件叫做底层,面对这个的开发是底层开发
3.C语言的历史
计算机是只能识别 0和1 的,也就是电平的高电平和低电平
一开始,我们使用二进制和计算机交流,之后,将固定功能的固定指令抽象,形成助记符,形成了汇编语言
为了更加适应自然语言,之后出现了C语言,随之各种高级语言如 JAVA,PYthon等就出现了
为了实现C语言的跨平台使用,美国国家标准局(ANSI)制定了C语言的标准,现在常用的有C90和C98标准
一个最简单的程序
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
printf("hello world");
return 0;
}
1. vscode 的使用
a. 项目的创建
一个项目,给他取一个好名字,然后找一个好路径,保存起来
然后创建一个源文件,将文件类型改为.c文件
然后就可以快乐地写代码了
b. 快捷键
直接执行 ctrl + f5,逐步调试 ctrl + f10,有时使用 ctrl + f11,想要看某些地址的内容
利用调试窗口的监视窗口
2. 最简单程序的解析
1. 过程,程序经过编译,连接,最后执行
1.编译和编译器
- 编译的过程是将 C语言的其他语言生成二进制可执行文件的过程,完成这个功能要借助编译器
- 常见的编译器有 GCC(Linux),Clang,等
- 使用的 visual studio 更像一个工具集,MSVC 可以看成是他的编译器内核
a. main函数
main 函数是程序的入口,一个程序有且只有一个入口
但是在汇编文件中
我们可以控制汇编的入口,用中断向量表就可以控制,当然这只是一个延伸罢了
一般来说主函数是
int main()
{
return 0;
}
一般返回0 ,表示程序正常,返回1变式程序异常
b. printf函数
花式显示了,感觉没什么
要是厉害,可以打印一个会动的
c. scanf函数
使用方式
#define _CRT_SECURE_NO_WARNINGS 1//因为这个scanf 他不安全,所以要加上这一句,不用 scanf_s 的原因是,scanf_s这是 visual stdio 的函数,换个编译器就用不了了
#include<stdio.h>//# 就是一个预处理指令,define 和 include 这个编译器规定罢了
int main()
{
int m = 0;
scanf("m=%d",&m);//取得键盘输入,然后放到m的地址中读取
return 0;
}
改注意的都写到注释里面了
需要说明的常见占位符
%d | %c | %s | %f |
---|---|---|---|
int | char | 字符串 | 浮点数 |
浮点数可以在前面加上 .n 例如: %.3f 表示 保留三位小数
对scanf 的循环操作可以这么写
while(scanf("%d",&a)!=EOF)
{
//这里表示,读取的不是特殊字符,我就一直读取,读取完后执行while循环
}
数据类型
1.数据类型大小
c语言有以下常见数据类型,对应的大小(单位是字节)为:
int | long | long long | short | char | float | double |
---|---|---|---|---|---|---|
4 | 4 | 8 | 4 | 1 | 4 | 8 |
利用 sizeof(类型) 单目操作符可以看大小 |
2.C语言储存大小
储存数据类型需要一定的空间大小,我把他叫做内存条,里面自己取了个名字叫内存块
一个内存块是一个 bit,八个内存块是一个 byte
内存再往后就是 1024 byte =1kb,1024kb = 1m。。。
一个数据根据他的数据类型,把他转换成二进制位放进内存条中,就是其抽象的储存方式
举个例子
一个int 17
转为二进制是 0111
在int 类型
需要三十二bit来储存(4*8 = 32)
其中储存起来就是 0000 0000
0000 0000 0000 0000 0000 0111
变量
1.变量的组成
定义方式 类型+名称
int std
规则
由数字,字母,下划线组成(数字不开头)
名字<=63 char
不能使用关键字
区分大小写
注意
使用形如55.6这样的数,对变量进行初始化,默认变量类型是 double
要想要其变为float 类型,初始化的值应该为 55.6f
1.生命周期与作用域
局部变量
指申明在大括号内部的变量
其进入大括号后申明,生命开始,出他所在的大括号,生命结束,大括号限制其生命周期
作用域为大括号
使用static 修饰,可以将生命周期延长为整个程序,不改变作用域
全局变量
使用 global 修饰或者 申明在最开头 (一般为写函数之前)的变量
作用域和生命周期都是整个函数
使用 extern 可以跨文件调用,比较不安全
可以使用static 对其进行修饰,限制外部连接的特性
常量
枚举常量
enum Month {Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,dec};
// 实例化
enum Month a = Feb;//这里Feb = 2
define常量
#define MAX 10//#define 是预处理指令,这个MAX就是一个 define 的常量
const
const修饰的变量,所以 const 修饰的常量也叫常变量,从数字赋予长度的角度看,const常变量是无法进行给长度的操作的,但是在canst修饰之后,却无法对常变量进行更改,所以又有常量的性质
const a = 10;
int arr[a];//err,说明本质常量
a=9;//err,说明无法修改
直接打印
这个其实不用多说,在初始化赋值所赋予的数字就是一个常量
总结
说了最简单的打印函数,如果比较繁琐的就是内存的说明,之后指针会继续细说
说了一下常量、变量以及一些常见的数据类型