1.数据类型
数据类型是为了让电脑知道你所用的数据是哪一类的以便于对它进行加工,就像打游戏里面给怪分种族,以便于你了解怪的特性,掉落材料等。而C语言的数据类型有以下几种类型
类型 | 类型名称 |
---|---|
char | 字符数据类型 |
short | 短整型 |
int | 整型 |
long | 长整型 |
long long | 更长的整型 |
float | 单精度浮点型 |
double | 双精度浮点型 |
这些数据类型所创的变量都占一定的内存空间,单位用字节来表示,可以采用sizeof这个操作符来求他们的大小,如下
#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));
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
printf("%d\n", sizeof(long double));
return 0;
}
求出的结果为
当然,不同的编译器下有些类型所占的空间不同,如int在以前很老的版本编译器(16位机器)下就占2个字节(现在普遍为4字节),long在其他编译器下也许就是8个字节。
2.这里提一下计算机单位
计算机中以二进制存数据,当计算机存一个二进制位时如1或0,就要开辟一小片空间,那个空间所占的大小就为1比特位(bit),而1byte(字节)= 8bit。
1byte = 8 bit
1kb = 1024 byte
1mb = 1024 kb
1gb = 1024 mb
1tb = 1024 gb
1pb = 1024 tb
3.变量和常量
在C语言中不变的值,就用常量这个值来表示,不断变化的值,则是用变量来表示(概念大概看一下,后面举具体的列子)
上面的数据类型就是来说明变量的如:
int age char name float weight 等,int age 意思是你在内存中开辟了一个空间,名字叫age,大小是int类型的(占4byte),后面两个变量也是同理。红色的叫做变量名,你可以自己来定义。定义一个变量最好给它初始化(也就是赋值),不然这个变量是个随机值,是不可控的,在你开辟的这个空间中你不知道住的是什么数值。当你给它赋予了一个值,你把这个值放入这个空间,你知道住在里面的是谁,并可以选择随时随地换一个值进来住。
初始化如 int age = 18; char name = 'w';float weight = 0.0;
后续如果想修改就如 age = 50; name = 'l'; weigth = 50.6
直接给变量名赋上一个新的值,变量之所以叫变量就是可以随便修改数值.
- 变量分类
变量分为局部变量与全局变量
在括号内定义的变量都叫局部变量,反之不在括号内的则为全局变量,下面写一个代码来看看
#include<stdio.h>
int global = 4;//全局变量
int main()
{
int local = 0; //局部变量
int global = 0;//局部变量
printf("local=%d global=%d", local, global);//猜猜输出的结果是什么
return 0;
}
不看第二个global,第一个global在括号外,所以当它在括号外时为全局变量(听君一席话如听一席话),这里输出的结果为 local=0 global=0,这表示了当全局变量与局部变量用同一个变量名时,优先使用局部变量所存的数据。
- 变量使用
变量可以用来参与运算,输出,输入结果等,总之变量就是很重要,C语言离不开变量
#include<stdio.h>
int main()
{
int local = 40; //局部变量
int global = 63;//局部变量
int add = local + global;//算数运算
printf("local=%d global=%d", local, global);//输出
printf("add = %d", add);
return 0;
}
以上就是对变量的一小部分使用,之后的列子会对变量大量使用,就可以见到变量在各种情况下的使用了。
- 变量的作用域和生命周期
当了解这里,能够对全局变量与局部变量有个更好的认识与区分。
作用域 :也就是变量所能起作用的范围,出了这个范围,就失效了。
局部变量的作用域 就在它所诞生的那个括号范围内
全局变量的作用域 则是整个工程,任何地方都可以使用
生命周期:生命周期也就是存在的时间,变量从产生到销毁的时间段
局部变量的生命周期 进入它所创建的那个括号内,生命周期开始,出来括号,生命周期结束。
全局变量的生命周期 就是整个程序的生命周期,从main()进入开始,到程序结束。
但!!!!作用域不等于生命周期,生命周期也就是创建的那个变量空间存在的时间,进去就产生,出来就销毁,但有一种情况,当局部变量出了它所在的范围,它所创的空间不销毁,里面的数据依然在,但在那个括号外,它就不能起作用了。
- 常量的分类及定义
常量分为 字面常量,const修饰的常变量(这个有点特别),#define 定义的标识符常量,枚举常量
字面常量 也就是 20 45 ‘m' ' n' 姓名,这些就是字面常量
#define定义的标识符常量
int main()
{
#define MIN 200
MIN = 200;//错误类型
return 0;
}
这里就是一个#define定义的常量,这个常量名为MIN,因为是常量,所以200不可给MIN赋值,如果这样写,编译器就会报错,出现语法错误。当用#define定义了,如上,MIN就是200,200就是MIN,可以直接使用如 int x = MIN+ 45;
枚举常量
将某一堆数据整合放在一类里,需要某个数据就可以直接调用这个类型名称,来选。
enum Student
{
NAME ,SEX , GRADE,
};
int main()
{
return 0;
}
需要里面的某一元素,我直接调用Student即可;(后面会详细写)
counst修饰的常变量,它本质上还是个变量,只不过具有常属性。(这一点在数组的创建即可体现)
感谢阅读,如有不足,恳求大佬给予斧正,再次感谢!!!