这是我在2022年10月16号第一次认识c语言,并写下所学总结
目录
1.什么是C语言?
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易
的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程
语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的
C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及
超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制
定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 [1] 目前2011年12月8
日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标
准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉
字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
2.数据类型——基本类型
2.1:什么是数据类型?
2.2:每种数据类型的大小是多少?
2.1.什么是数据类型?
C语言数据类型包括:基本类型,构造类型,指针类型,以及空类型void。
而基本类型又分为数值类型和字符类型char
一:基本数值类型
整形:
int——整形
short——短整形
long——长整形
longlong——更长的整形
浮点型:
float单精度型
double双精度型
二:构造类型
数组
结构体struct
共用体union
枚举类型enum
三:指针类型
四:空类型void
2.2.每种数据类型的大小是多少?
我们知道每个基本数据类型都有大小,那么它们的大小分别是多少呢?下面我们用sizeof这个代码来简单计算一下各个基本数据类型的大小,sizeof代码格式:sizeof(数据类型)
#include<stdio.h>
int main()
{
printf("%d\n",sizeof(char));
printf("%d\n",sizeof(int));
printf("%d\n",sizeof(short));
printf("%d\n",sizeof(long));
printf("%d\n",sizeof(long long));
printf("%d\n",sizeof(float));
printf("%d\n",sizeof(double));
return 0;
}
可以看到,我们的基本数据类型大小为:
char=1
int=4
short=2
long=4
long long=8
float=4
double=8
3.变量以及常量
3.1.定义变量的方法
3.2.变量的命名
3.3.变量的分类
3.4.变量的使用
3.5.变量的作用域以及生命周期
3.6.常量
我们生活中也有许多变量以及常量的存在 如:
圆周率,性别,血型,身份证号码,这些都常量,不可变的
还有像身高,体重,薪资,年龄这些都是可变的
在C语言中,不变的值用常量来表示,变的值用变量来表示
3.1.定义变量的方法:
int age = 150;
float = 45.5f;
char ch = 'w';
3.2.变量的命名
变量名只能由字母(包括大写小写),数字和下划线(_)组成
变量名不能以数字开头
变量名长度不能超过63个字符
变量名中区分大小写
变量名不能使用关键字
下面举些错误的例子:
int @abc1 = 0; //变量名中有符号
int 32a = 0; //变量名以数字开头
int char = 0; //变量名使用了关键字
然后变量名中是区分大小写的:
例如:int age = 0; 和 int Age = 0;这是两个不同的变量
3.3.变量的分类
变量分为全局变量和局部变量
#include<stdio.h>
int a = 100;//全局变量
int main()
{
int a = 10;//局部变量
printf("%d\n", a);
return 0;
}
我们可以看到上面的代码,主函数main外的a变量是全局变量,括号里面的是局部变量
当全局变量和局部变量同名时,局部变量优先,我们可以运行一下,打印结果会是10
3.4.变量的使用
下面我们进入实战使用一下变量来完成简单的加减法:
#include <stdio.h>
int main()
{
int num1 = 0;//声明变量num1并初始化值为0
int num2 = 0;//声明变量num2并初始化值为0
int num = 0;//声明变量num并初始化值为0
printf("请输入两个数:");//打印提示
scanf("%d %d",&num1,&num2);//scanf获取num1,num2的数值
sum = num1+num2;//通过sum使sum1,sum2相加
printf("sum = %d\n,sum");//打印sum
return = 0;
}
3.5.变量的作用域以及生命周期
变量的作用域
作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域
局部变量的作用域是变量所在的局部范围
全局变量的作用域就是整个工程
变量的生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束。
全局变量的生命周期:整个程序的生命周期。
3.6.常量
C语言中常量分为以下几种:
1.字面常量
例如:1,2,3。3.14。100
字符字面常量:a,b,c,d,e 字符串字面常量:abcdefg
2.const修饰的常变量
int main()
{
const int num = 100;//这里的num是const修饰的常变量
num = 200;//这里是不能直接修改的
return 0;
}
const的作用在C语言中只是在语法层面限制了const修饰过的常变量不能直接修改,但是本质上还是一个变量,所以叫常变量
3.#define定义的标识符常量
#define MAX 100//定义MAX=100
printf("%d\n".MAX)//打印MAX
4.枚举常量
enum Sex
{
MALE,//男
FEMALE, //女
SECRER//保密
};
int main()
{
printf("%d\n",MALE);
printf("%d\n",FEMALE);
printf("%d\n",SECET);
return 0;
}
(1) 枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。
(2) Sex是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。
(3) 第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。
(4) 可以人为设定枚举成员的值,从而自定义某个范围内的整数。
(5) 枚举型是预处理指令#define的替代。
(6) 类型定义以分号;结束。
4.字符串+转义字符+注释
4.1.字符串
4.2.转义字符
4.3.注释
"Hello my name is jay.\n"
这种由双引号引起来的一串字符就称为字符串
字符串的结束标注是一个 \0 的转义字符,在计算机中计算字符串长度的时候 \0 只是结束标志,不计入字符串长度
int main()
{
char arr1[] = "hello";
char arr2[] = { 'h','e','l','l','o' };
char arr3[] = { 'h','e','l','l','o','\0' };
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", arr3);
return 0;
}
我们可以从运行结果看到,arr2中除了打印hello这个自己定义的字符外还打印了其他的字符,这是因为计算机在读取的时候遇到\0才会结束读取,就像arr3一样,输入了\0就不会打印其他额外的字符,我们还可以计算一下arr1-3的字符长度
int main()
{
char arr1[] = "hello";
char arr2[] = { 'h','e','l','l','o' };
char arr3[] = { 'h','e','l','l','o','\0' };
printf("%s\n", sizeof(arr1));
printf("%s\n", sizeof(arr2));
printf("%s\n", sizeof(arr3));
return 0;
}
4.2转义字符
转义字符的意思就是转变字符的意思
下面来看一下都有哪些转义字符
转义字符 | 释义 |
\? | 在书写连续多个问号的时候防止它们被解析成三字母词 |
\' | 用于表示字符常量' |
\" | 用于表示一个字符串内部的双引号 |
\\ | 用于表示一个反杠防止它被解释为一个转义序列符 |
\a | 警告字符,蜂鸣 |
\b | 退格符 |
\f | 进纸符 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | ddd表示1-3个八进制的数字 |
\xdd | dd表示2个十六进制的数字 |
4.3.注释
这里有两种注释风格,一种是c语言的,一种是c++的
1. /*中间是要注释的内容*/ 这种是c语言的风格
2. //后面写要注释的内容 这种是c++的风格
c语言的解释风格其实是有缺陷的,这种注释法是不能嵌套使用的,所以现在都是用//来注释