C语言入门-基本概念(上)(学习笔记)
一、数据类型
程序为了解决不同的问题,需要用到不同的变量(就好比物理公式中的不同参数)。数据类型表示了不同类型的变量以及其在内存中的存储形式,并且不同的变量可以进行的操作处理也不尽相同。c语言规定了7种基本数据类型,分别是:
-
整形
- short、int、long、long long 实型(也称浮点型)
- float、double 字符型
- char
变量的定义方式如下:
int a = 0;
上述代码定义了一个整形变量a,并将其值初始化为0。
1.整形
整形储存整数变量,如-1、0、1、2等。short、int、long和long long表示这些整形变量在内存中所占的空间大小不同(关于内存的介绍会在后文中讲述),由于占据不同大小的空间,这些类型的取值范围也不同。
类型 | 占据空间 | 取值范围 |
---|---|---|
short | 2byte | -32 768 ~ 32 767 |
int | 4byte | -2 147 483 648 ~ 2 147 483 647 |
long | 4byte | -2 147 483 648 ~ 2 147 483 647 |
long long | 8byte | -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807 |
注:c语言规定long类型大小≥ int即可。
2.实型(浮点型)
实型储存实数变量(即包含小数的数值),类似整型中不同的类型,float和double在内存中所占据的空间大小也不同,float占据4个字节(byte),double占据8个字节。但是不同于整型的是,float和double的区别在于小数的精度不同,这与浮点数在内存中的储存方式有关。
类型 | 名称 | 占据空间 |
---|---|---|
float | 单精度型 | 4byte |
double | 双精度型 | 8byte |
3.字符型
字符型变量储存内容为字符,每一个字符型变量只能储存一个字符,想要储存多个字符(字符串)就要使用数组。
//储存字符
char ch = 'a';
//储存字符串
char ch[] = "abc";
单个字符使用单引号''
表示,字符串使用双引号""
表示
二、变量和常量
在解决问题过程中,有些量是不变的(比如圆周率、身份证号、血型等),而有些量是变化的(如身高、体重、价格)。在c语言中,不变的值称为常量,变化的值成为变量。
1.变量
在上一节中提到了变量的定义方式,变量又分为局部变量和全局变量,二者的作用域不同。从直观角度来看,{}
外部的变量称为全局变量,{}
内部的变量称为局部变量。
int a = 0; //a是一个全局变量
int main()
{
int b = 0; //b是一个局部变量
return 0;
}
变量在创建时应该对其进行初始化(即赋值)。若不为其赋值,变量储存的为一个不确定的值,当代码过于复杂时,容易忘记为其赋值而导致代码运行过程中出现问题。
1.1全局变量
全局变量可以被整个项目工程使用,在工程开始时被创建,结束时销毁,同一工程内的不同文件也可以使用。
全局变量有作用域广的特点,但是也有明显的缺点,全局变量可以被任意一处代码调用,因此该变量容易被修改,安全性低。
1.1局部变量
局部变量的作用域是其所在的代码块内部(即{}
的内部),局部变量只能在其作用域内使用,程序进入作用域时创建,程序执行完这部分代码块之后局部变量销毁。
当局部变量和全局变量名称相同时,调用时优先调用局部变量,当范围内不存在局部变量时,才调用全局变量。例如,下面这段代码打印出a的值为100,而不是10。
int a = 10;
int main()
{
int a = 100;
printf("%d", a); //在屏幕上打印a的值
return 0 ;
}
为了防止程序出错,局部变量和全局变量不应该使用相同的名字。
2.常量
C语言中常见的常量分为以下几种:
- 字面常量
const
修饰的常变量#define
定义的标识符常量- 枚举常量
2.1字面常量
字面常量即直接写出来的常量,包括数字、字符、字符串等(e.g. 3.14
,'w'
,"abc"
)
2.2const
修饰的常变量
使用const
修饰的变量不可被修改,称为常变量,形式如下:
const int b = 10;
b = 20; //此处对b进行修改时程序会报错
但是const
修饰的本质是变量,只是不能被修改,有部分常量的属性。例如,定义数组时元素个数需要使用常量,这时使用const
定义的常变量就会报错
const int b = 10;
int arr[b] = { 0 }; //此处代码会报错,提醒[]内应该是常量表达式
2.3#define
定义的标识符常量
#define
定义的标识符常量使用方法如下:
#define MAX = 100;
#define STR = "abc";
int main()
{
printf("%d\n", MAX);
int a = Max;
printf("%d\n", a);
printf("%s\n", STR);
return 0;
}
可以理解为#define
定义了一个标识符,它具有对应的值,是不能被修改的。
2.4枚举常量
某些可以列举出来的量可以创建成枚举类型,并且可以以这个枚举类型来创建变量。例如三原色(RGB):
enum Color
{
RED,
GREEN,
BLUE
};
int main()
{
enum Color c = RED;
return 0;
}