前言
如果觉的博主的文章还不错的话,还请点赞,收藏,关注支持博主。如果发现有问题的地方欢迎❀大家在评论区指正。
本篇介绍C语言的一些基础知识
另分享一篇关于vs快捷键的博文可能对大家的工作有所帮助:
本篇暂时不深入讲解,后续会逐渐渗透
目录
1.什么是C语言
- C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易 的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
- 尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的 C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超 级电脑等作业平台。
- c语言的研发时期大概在1972年,如下是2021年计算机语言的总榜,通过对比可知C语言是最值得信任的语言,c语言是鼻祖的存在,可想而知c语言对学习其他语言的帮助。
- 编辑
2.编程环境的构建
- C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。 其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。Gcc是最常用的编译器,但我们初学一般使用集成开发环境--IDE,如:Visual Studio 具体下载可参考我的另一篇博客:
3.C 程序结构
- 在我们学习 C 语言的基本构建块之前,让我们先来看看一个最小的 C 程序结构,在接下来的章节中可以以此作为参考。
C 程序主要包括以下部分:
- 预处理器指令
- 函数
- 变量
- 语句 & 表达式
- C 语言有两种注释方式:
1 |
|
- 以 // 开始的单行注释,这种注释可以单独占一行。
1 2 3 4 5 6 |
|
- /* */ 这种格式的注释可以单行或多行。
- C Hello World 实例:
让我们看一段简单的代码,可以输出单词 "Hello World":
1 2 3 4 5 6 7 8 9 |
|
下面的这种代码也是可以的
int main(void)//void表示main函数不需要参数 { return 0; }
- 反例:
//不建议这样写: void main() { //这种写法是非常古老的 } 不标准的写法: main() { }
4. 数据类型
存在这么多的类型,其实是为了更加丰富的表达生活中的各种值。
- 类型的使用:
- 整型:
char //字符数据类型
short //短整型
int //整形
long //长整型
long long //更长的整形
- 浮点型:(即小数)
float //单精度浮点数,精确度低
double //双精度浮点数,精确度高
#include <stdio.h> int main() { printf("%d\n", sizeof(char)); printf("%d\n", sizeof(short)); printf("%d\n", sizeof(int)); printf("%d\n", sizeof(long)); printf("%d\n", sizeof(long long));// %d 打印10进制的整数 printf("%d\n", sizeof(float)); printf("%d\n", sizeof(double)); printf("%d\n", sizeof(long double)); return 0; }
编辑
右侧所得单位为字节byte
电脑支持的是二进制语言
编辑编辑编辑
4.1 变量的命名
只能由字母(包括大写和小写)、数字和下划线( _ )组成。
不能以数字开头。
长度不能超过63个字符。
变量名中区分大小写的。
变量名不能使用关键字。
4.2 变量的分类
局部变量
全局变量
当局部变量和全局变量同名的时候,局部变量优先使用。
4.3变量的使用
float weight = 45.5f;//不加f编译器默认为double类型,加f强制转换为float类型
编辑
#include
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
printf("输入两个操作数:>");
scanf("%d %d", &num1, &num2);
sum = num1 + num2;
printf("sum = %d\n", sum);
return 0;
}
4.3 变量的作用域和生命周期
作用域
作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用
的而限定这个名字的可用性的代码范围就是这个名字的作用域。
1. 局部变量的作用域是变量所在的局部范围。看最近的{ }即可判断
2. 全局变量的作用域是整个工程。
生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
2. 全局变量的生命周期是:整个程序的生命周期。
4.54常量(不变的量)
C语言中的常量和变量的定义的形式有所差异。
C语言中的常量分为以下以下几种:
字面常量:如100、3.14浮点型字面值、’a‘字符字面值、“abcde”字符串字面值
4.41 const 修饰的常变量
#include<stdio.h> int main() { int num = 10; num = 20; //改变了变量num的值 printf("%d\n", num); return 0; }
编辑
直接输入变量,可以看出通过第四行的操作直接改变了变量的输出值
当在变量前面输入const 如下:
#include<stdio.h> int main() { const int num = 10; num = 20; printf("%d\n", num); return 0; }
编辑
报错: 第四行左值指定说明变量的值不允许改了,说明coonst具有指定作用,这时候后面的值num就具有了常量的属性,但num本质还是一个变量,所以称之为常变量
综上const用于需要一个常量,但此值不能改的时候
4.42 #define 定义的标识符常量
代码如下:
编辑
如上图输出值为100,如果再输入MAX=200;会怎样呢?
编辑
如图,报错左操作数必须为左值,说明define定义的这个量是不可改变的即常量
4.43枚举常量
枚举>一一列举
c语言中的枚举类型num
编辑
如上输出值为0、1、2,是不可以改变的
需要注意的是enum下的标点符号
5. 字符串+转义字符+注释
5.1 字符串
“hello world”
这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符 串。
注:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串
#include<stdio.h> int main() { char arr1[] = "abc"; char arr2[] = { 'a','b','c' }; printf("%s\n", arr1); printf("%s\n", arr2); return 0; }
编辑
如图可监视到字符串的结束标志\0编辑
arr2输出乱码,但如果在其后加入‘\0’就输出abc,这里就不演示了
另外想要输出字符串的长度可以使用strlen库函数(string length),需要注意的是包含头文件#include
演示:
#include<stdio.h> #include<string.h> int main() { char arr1[] = "abc"; char arr2[] = { 'a','b','c','\0' }; printf("%d\n", strlen(arr1)); printf("%d\n", strlen(arr2)); return 0; }
结果:编辑
下面这种方式arr2的输出值为随机值,因为没有\0
编辑
5.2 转义字符
假如我们要在屏幕上打印一个目录: c:\code\test.c
我们该如何写代码?
#include
int main()
{
printf("c:\code\test.c\n");
return 0;
}
实际上程序运行的结果是这样的:
编辑
这里就不得不提一下转义字符了。转义字符顾名思义就是转变意思。
下面看一些转义字符。
\? |
在书写连续多个问号时使用,防止他们被解析成三字母词 |
\' |
用于表示字符常量' |
\“ |
用于表示一个字符串内部的双引号 |
\\ |
用于表示一个反斜杠,防止它被解释为一个转义序列符 |
\a |
警告字符,蜂鸣 |
\b |
退格符 |
\f |
进纸符 |
\n |
换行 |
\r |
回车 |
\t |
水平制表符 就是键盘上Tab的意思 |
\v |
垂直制表符 |
\ddd |
ddd表示1-3个八进制的数字。 \130 X |
\xdd |
dd表示2个十六进制的数字。 如: \x30 0 |
现在一般不用
5.21 三字母词
编辑 如图??)或??(即为三转义字符分别代表】和【
如下图若用\加在?前则可防止编译器将他们翻译成三字母词,不过现在的编译器大多不支持三字母词,一些老旧编译器还是支持的
编辑
2.
编辑编辑
编辑
如图想打印字符形式的单引号如图在单引号前加\即可实现,如图双引号类似
3.
编辑
如图,若想使 \t 不以转义字符的形式输出,则在其前加 \ ,正常输出。
5.22 \ddd
编辑
编辑
八进制数130转换成10进制数字,对应的值88 作为 ASCLL码值表示的字符是’X‘
编辑
5.23 xdd
编辑
编辑
编辑
八进制数字是0——7,所以输出14
6. 注释
1. 代码中有不需要的代码可以直接删除,也可以注释掉
2. 代码中有些代码比较难懂,可以加一下注释文字
注释有两种风格:
C语言风格的注释/*xxxxxx*/
缺陷:不能嵌套注释
C++风格的注释//xxxxxxxx
可以注释一行也可以注释多行
7. 选择语句
if
#include
int main()
{
int coding = 0;
printf("你会去敲代码吗?(选择1 or 0):>");
scanf("%d", &coding);
if(coding == 1)
{
prinf("坚持,你会有好offer\n");
}
else
{
printf("放弃,回家卖红薯\n");
}
return 0;
8. 循环语句
C语言中如何实现循环呢?
while语句
for语句
do ... while语句
这里暂时只接触一下while循环的实例
#include
int main()
{
printf("规划学习\n");
int line = 0;
while(line<=20000)
{
line++;
printf("我要继续努力敲代码\n");
}
if(line>20000)
printf("好offer\n");
return 0; }
9. 函数
#include <stdio.h> int main() { int num1 = 0; int num2 = 0; int sum = 0; printf("输入两个操作数:>"); scanf("%d %d", &num1, &num2); sum = num1 + num2; printf("sum = %d\n", sum); return 0; } 上述代码,写成函数如下: #include <stdio.h> int Add(int x, int y) { int z = x+y; return z; } int main() { int num1 = 0; int num2 = 0; int sum = 0; printf("输入两个操作数:>"); scanf("%d %d", &num1, &num2); sum = Add(num1, num2); printf("sum = %d\n", sum); return 0; } int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素