本系列博客旨在记入博主学习C语言的的笔记和自己的一些理解。
希望通过博主的一些分享能够帮助学习c语言小白快速入门,和博主一起学习,快速进步,一起交流,互相督促,共同学习!(本系列持续更新)
基本了解C语言的基础知识,对C语言有一个大概的认识。每个知识点就是简单认识,快速入门C语言,后期博主还会对每个知识点深入学习。
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
像英语,汉语一样,属于交流的语言,不过是人和计算机交流的语言。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
第一代计算机语言称为机器语言。机器语言就是 0/1 代码。计算机只能识别 0 和 1。在计算机内部,无论是一部电影还是一首歌曲或是一张图片,最终保存的都是 0/1 代码,因为 CPU 只能执行 0/1 代码。
首先这么像机器语言编写肯定是可以的,但是这样太麻烦,而且很不好理解,所以后来就出现了汇编语言。
汇编语言就是将一串很枯燥无味的机器语言转化成一个英文单词。比如说:add 1, 2;
add 就是一个英文单词,这样看起来就稍微有一些含义了,即 1 和 2 相加。这个就是汇编语言。
C语言是由B语言发展而来,而后大多公司都使用C语言,不同的公司对C语言有自己的发展,和改进,而后出现不同的标准。
为了统一标准 美国国家标准协会(ANSI)先后C89 C99 C12等标准。目前比较权威的为c99。
而后在C语言的基础演变了C++,java 等面向对象的语言。
广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言偏向于底层开发,如操作系统。
1、广泛用于底层开发
2,可移植性强,跨平台性
3,其编译器(将C语言转换成计算机语言)主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
如VS(IDE集成开发环境)用的就是MSVC编译器。
看了C语言的历史你肯定迫不及待想自己写一个C语言程序吧。
VS2019下载地址
下载vs2013及以上版本环境
B站比特鹏哥教程如下
VS2019安装教程
相信看了安装教程,你已经安装好了VS2019并且成功的创建第一个C语言项目吧。
那我们来写第一个C语言程序吧!
在屏幕中输出Hello world!
是不是很神奇,短短6行代码便实现了我们想要实现的功能。
其实编程语言的出现,代码就是描述我们生活中的实际问题的!
1, 一个项目中有且仅有一个主(main)函数
2,{ 是程序的入口 表示程序开始,} 便是程序的出口表示程序结束
3,因为printf是在stdio.h库中的,就好比生活中你使用别人的东西 ,使用了printf函数前需要向stdio.h打招呼所以 main 函数上面要包含库函数
4 ,main前有一个int 说明该函数的返回值是整型(这些我们待会会学到,先记住)与最后一行代码return 0相呼应;
记住上面便能实现自己第一个C语言程序了快去试试吧!
//整型
//即数学中的整数
short
int
long
long long
//浮点型
//数学中的小数(小数点可浮动)
float
double
整型 可以表示生活中的 年龄 ,人数等整数数据
而浮点型 可以表示 生活中的体重,身高等带有小数的数据
想必你会疑问 :为什么会出现怎么多数据类型呢?
首先我们先来测试一下它们这些类型的内存大小
我们先来认识一个函数
sizeof()用来计算类型或者数据所占内存空间大小的函数返回值是int 即返回字节大小
注:C语言规定sizeof(long)>=sizeof(int) 即可
所以long类型在不同平台的大小不同,4/8
根据生活中数据范围不同选择不一样的数据类型,合理的利用内存空间
比如 一个人的年龄 最多不超过500 所以用short短整型即可
表示精度的不同,即小数点后面 位数长度不同
根据你的数据精度不同,合理选择浮点类型
顾名思义 常量就是不变的量,变量可以改变的量
不可改变的量
如人的性别,身份证号码等等…
66;
3.14
999
//*这些都是字面常量*
const 修饰变量使改变量具有常属性(不可修改)
const int height=175;//创建了一个int类型的变量 const修饰后
// height不可改变
height=200; //err
但是该量还是变量只不过有了常量的不可修改属性
代码中的两个错误
错误1,const 修饰的常量不可修改
错误2,const 本质还是变量不可定义数组长度
使用方法
#define MAX 100
#define +空格+常量名+空格+字面常量
注:常量名习惯大写
生活中有一些值可以一一列举
比如 :性别,三元色等等;
enum sexa //枚举类型
{
male, //枚举常量
female
};
enum sexa 就是枚举类型和int一样属于一种数据类型
该类型只有两种枚举常量可以选择 male和female
使用时赋值其他未定义的枚举常量会报错
每个枚举常量有自己的值 规定第一个值为0然后从上到下依次加一;
设置枚举常量可以赋初始值
可以改变的量
类型 +变量名+常量;
int age=10;
age=13;//可以修改
float pai=3.14;
char ch='w';
局部变量
定义在{}内的变量为局部变量
全局变量
定义在main函数外且不在{}内的变量
eg:
int glab=4;//全局变量
int add(int x, int y)
{
int sum=0;
// 局部变量
}
int main()
{
int a=6;
// 局部变量
}
是否想过当局部变量和全局变量同名时会怎样?
看到上面的结果想必你有了答案!
总结
上面的局部变量a变量的定义其实没有什么问题的!
当局部变量和全局变变量同时存在时采用局部优先原则
作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的而限定这个名字的可用性的代码范围就是这个名字的作用域。
简单的说作用域就是该变量存在的范围 出了该范围该变量就失效
局部变量的作用域在它的局部范围即在{ }
全局变量的作用域在整个工程
int main()
{
int b=1;
{
int a=12;
// a的作用域
}
// b的作用域
}
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
" Hello world"
这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。
顾名思义字符串就是一串字符
C语言没有这种类型,所以通常存放在数组中
//字符
char ch='w';
//字符串
char arr1[]={
'H','e','l','l','o'};
char arr2[]="hello";
注:字符串的结束标志是一个\0的转义字符。
在计算字符串长度的时候\0是结束标志,不算作字符串内容。
可以直观看到字符串arr2内有6个字符,而字符数组只有5个字符
打印arr1和arr2时因为打印函数遇到‘\0’才会停止打印
所以arr1在后面找了很久才遇到’\0’所以Hello后面都是随机值
那‘\0’算字符串长度吗?
strlen计算字符串长度函数遇到’\0’计算结束
arr1找了31个字符才找到结束标志‘\0’
所以‘\0’并不算字符串长度
总结
字符串的结束标志是一个\0的转义字符。
在计算字符串长度的时候\0是结束标志,不算作字符串内容。
当你要打印你的文件路径时
就很迷,为什么这样呢?
这是就要提到转义字符这个概念了
难道转义字符是转变了该字符的本来意思?
下面看一些转义字符
转义字符的使用
看了转义字符成功打印了正确的路径
自己可以去试试
1.代码中有不需要的代码可以直接删除,也可以注释掉
2. 代码中有些代码比较难懂,可以加一下注释文字
注释有两种风格:C语言风格的注释/xxxxxx/
缺陷:不能嵌套注释
C++风格的注释//xxxxxxxx可以注释一行也可以