文章目录
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. 第一个C语言程序
#include <stdio.h>
int main()
{
printf("hello world\n");
printf("hehe\n");
return 0;
} //main函数是程序的入口
//一个工程中只能有一个main函数
// '\n'的意思为换行
以上就是一个C语言程序,代码运行后是这样:
如你所见,实在屏幕上打印hello world和hehe,这是C语言中最简单的一例代码.小伙伴们也想打印的话可以把双引号内的内容替换成自己想打印的内容.
3.数据类型
3.1 常见的数据类型有
- char ——字符数据类型
- short ——短整型
- int ——整形
- long ——长整型
- long long ——更长的整形
- float ——单精度类型
- fouble ——双精度类型
我们知道计算机识别的是二进制,而二进制里只有1和0,这里的1和0在计算机内存里占1bit,而bit是计算机内存大小中最小的单位,由此我们可以引进计算机里的数据大小单位:
1 byte(字节) = 8 bit
1 kb = 1024 byte
1 MB = 1024 kb
1 GB = 1024 MB
1 TB = 1024 GB
…
3.2 那之前每种数据类型的大小为多少呢?
在这里我们需要引入一种运算符:sizeof (非关键字),用来计算数据类型大小,单位为字节。
代码如下:
#include <stdio.h>
int main()
{
printf("%d\n", sizeof(char));//计算char的数据类型所占的内存空间大小
printf("%d\n", sizeof(short));//意思同上
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long));
printf("%d\n", sizeof(long long));
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
return 0;
}
代码运行结果为:
由此我们可以看出各数据类型所占的空间大小,最大的是long long 即长长整形,占了8个字节,最小的为字符数据类型字节,占了1个字节;在这里我们发现int和long所占的大小皆为4字节,这是因为C语言中long所占的大小被设定为大于等于int,也就是大于等于4,在这里的4并不代表long类型只占4个字节。
注意:存在这么多类型,其实是为了更加丰富的表达生活中的各种值
3.3 数据的使用
char ch = ‘w’;
int weight = 120;
int salary = 20000;
4.变量、常量
什么是变量,什么是常量?
- 生活中,有些值是不会变的,比如:血型、身份证号码、圆周率…
- 有些值是可变的,比如:年龄、体重、薪资…
前者为常量,后者为变量
变量创建的本质是在内存中创建一个空间,用来存放数据
在这里,我们再插入一段简单的代码:
#include <stdio.h>
int main()
{
int a = 0;
scanf("%d", &a);
printf("%d", a);
return 0;
}
在上面这段代码中a就是这个变量,变量的类型为整形;scanf和printf是库函数,是由C语言编译器提供的现成的函数,可直接使用。
- scanf函数的意思是输入数据,数据从键盘读取到内存中
- printf函数的意思是输出数据,数据从内存打印到屏幕上
上述输入输出语句中%d的意思是整形(整数)的意思,&是取地址的意思,&a就是取出a的地址。
4.1定义变量的方法
int age = 150;
float weight = 45.5f;
char ch = ‘w’;
4.2 变量的命名
- 不能以数字开头
- 只能有大小写字母,数字和下划线组成
- 长度不能超过63个字符
- 变量名不能是关键字(这个我们后面讲)
- 变量名区分大小写
4.3 变量的分类
变量分为全局变量和局部变量
#include <stdio.h>
int a = 1;//全局变量
int main()
{
int a = 2;//局部变量
printf("%d\n",a);
return 0;
}
在main函数以外的被称为全局变量,相反以内的被称为局部变量
而以上代码中有2个a,我们输出的到底是哪个a,各位小伙伴不妨猜一猜;答案是这段代码运行的结果为2,疑问来了,为什么是2而不是1呢?
在这里,我们要注意:当全局变量和局部变量相同时,局部变量优先
4.4 变量的作用域和生命周期
作用域
作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用
的而限定这个名字的可用性的代码范围就是这个名字的作用域。
- 局部变量的作用域是变量所在的局部范围
- 全局变量的作用域是整个工程
生命周期
- 局部变量的生命周期是进入作用域生命周期开始,出作用域生命周期结束,简单来说就是从囊括局部变量的第一个大括号开始,第二个大括号结束
- 全局变量的生命周期是整个程序
4.5 常量
常量分为:
- 字面常量
- const修饰的常变量
- #define修饰的标识符常量
- 枚举常量
1.字面常量:像3、3.14159这种数字a、abc这种字符和字符串都是字面常量
2.常变量:
#include <stdio.h>
int main()
{
const int a = 2;
a = 3;
printf("%d", a);
return 0;
}
如这段代码,我在int前加了个const,给a赋予了常属性
这段代码未加const前理应输出3,但现在我加了const,代码的运行结果如何?是不是以为结果是2,错,其实这段代码会报错
这里的a是具有常属性的,不能改变,但是本质上还是变量
就如某些女装大佬,只是穿上了女性的衣服,其本质上还是个男性,
如数组arr[ n ],语法中n必须是个常量,那这个n能不能为a,答案是否定的,因为a的本质还是一个变量!
3.#define定义的标识符常量:
#include <stdio.h>
#define size 10
int main()
{
int a = size;
int arr[size];
printf("%d", a);
return 0;
}
在这里我们定义了size = 10,size就被定义为了一个常量,这个常量等于10,于是a就等于10,而arr[ ]的[ ]里的size就是一个彻彻底底的常量了,符合语法规则,代表含有10个相同类型的数组arr。
类似的还有:
#define max 10000
#define ch 'w'
4.枚举常量
枚举——>一 一列举
#include <stdio.h>
enum sex
{
male,
female,
secret,
};
int main()
{
printf("%d\n", male);
printf("%d\n", female);
printf("%d\n", secret);
return 0;
}
如以上函数,enum为C语言中定于的枚举关键字,可以定义一些枚举类型,我们定义sex(性别),列出来sex的可能取值,分别为男性,女性,保密,而这三个常量值是什么呢? 我们打印输出看看:
答案是从上到下分别是0,1,2
如果我们将第一个male的初始值改掉,赋值为5,那么改变后的这三个值为5,6,7,它们是依次向下递增的;
在常量很多的情况下,如果我不改其他,只将中间的值改为8,那么在中间下面的值为9,10,11…,而在中间往上的值为从第一个常量向下递增,也就是从0开始向下递增。
注意:枚举常量是默认从0开始的,依次向下递增1
今天的文章就到这里啦~
我是Dz,我们下期再见~