C语言的数据类型和变量

1.0数据类型

1.0.0数据类型分类

【signed 有符号 有正负   unsigned 无符号 只有0和正整数】

ps  int = signed int

      char 默认由系统决定 signed char -取值范围:  -128-127   

                                        unsigned char - 取值范围: 0-255

      

1.0.1内置类型(直接可以使用、自带)

(1)字符型( ' '  char )

(2)整型(描述整数 int  默认signed

short [ int ] 短整型

int 整型

long [ int ] 长整型

long long [ int ] 长长整型

(3)浮点型(小数)

float 单精度浮点型

double 双精度浮点型

long double

(4)布尔类型(描述真和假  (bool)   _Bool=true/false)

头文件 

1.0.2自定义数据类型

1.数组
2.结构体-struct
3.枚举-enum
4.联合体-union

1.0.1测量数据类型长度

1.计算机中常见单位

1024 = 2^10

bit -比特位 - 1个比特位存储一个二进制位(0/1)

Byte -字节- 1个Byte= 8个bit

KB - 1KB =1024 Byte

MB - 1MB =1024 KB

GB - 1GB = 1024 MB

TB - 1TB =1024 GB

 PB - 1PB = 1024 TB

······

2.常见数据类型所占存储空间

数据类型 \ 不同编译器 16位编译器 32位编译器 64位编译器
char 1 Byte
char* 2 Byte 4 Byte 8 Byte
short int 2 Byte
int 2 Byte 4 Byte
unsigned int 2 Byte 4 Byte
float 4 Byte
double 8 Byte
long 4 Byte 8 Byte
long long 8 Byte
unsigned long 4 Byte 8 Byte
.... .... ... ...

3.sizeof操作符

sizeof(类型) /   sizeof 变量

ps:sizeof 里表达式不运算 == 此表达式不会影响程序结果

单位:字节

返回值:无符号数字

sizeof计算结果:size_t类型  - 只规定为无符号整数 无具体类型

2.0变量

2.0.0变量的创建

1.格式: 数据类型 变量名称

2.变量名称:变量名有意义 且只能是由字母 数字 下划线组成 不能数字开头

3.ppppps: 变量只是在该作用范围内使用

ppppps:变量切记要初始化!

int main()
{
int a=0;
char b='\0';
float c=0;
return 0;
}

2.0.1变量的分类

推测下列代码运行结果


#define PI 3.14
#define str "圆周率为"
int main()
{
	int a = 2;
	{
		int a = 3;
		printf("a1=%d\n", a);
		printf("%s %f\n",str,PI);
	}
	printf("a2=%d\n", a);
	return 0;
}

运行结果

C语言的数据类型和变量_第1张图片

1.全局变量:在{ }外定义  整个工程中都可以使用

2.局部变量:在{ }内定义

pppppps  :  局部变量与全局变量名称相同时 局部优先

eg. 上述代码中的 变量a 

3.内存分类

(1)栈区 :局部变量 形式参数 函数栈帧空间

(2)堆区 :动态内存管理 ( malloc  calloc realloc free)

(3)静态区:全局变量 静态变量

名 词 解 释

栈 :

是一种数据结构 只能在一端进行插入和删除操作 (按先进后出的原则存储数据)

压 栈 (push):在栈中存放数据从低到高     我理解为函数递归中的递推过程

C语言的数据类型和变量_第2张图片  高地址

出 栈 (pop):拿出栈中的数据       我理解为函数递归中的回归过程

C语言的数据类型和变量_第3张图片

栈 帧

1.每个未运行完的函数都有一个对应的栈帧

2.栈帧保存了函数的返回地址和局部变量

你可能感兴趣的:(c语言,开发语言)