数据类型
基本类型:
| 名称 | 含义 | 长度 | 范围 |
|---|---|---|---|
| bit | 位 | 1位 | 0,1 |
| char | 字符型 | 1字节 | -128 ~ 127 |
| unsigned char | 字符型 | 1字节 | 0 ~ 255 |
| int | 整型 | 2字节 | -32768 ~ 32767 |
| unsigned int | 整型 | 2字节 | 0 ~ 65525 |
| long | 长整型 | 4字节 | -2147483648 ~ 2147482647 |
| unsigned long | 长整型 | 4字节 | 0 ~ 4294967296 |
| float | 单精度浮点型 | 4字节 | -3.40E+38 ~ +3.40E+38 |
| double | 双精度浮点型 | 8字节 | -1.79E+308 ~ +1.79E+308 |
| - | 指针 | 2~3字节 | 指向 0 ~ 64KB 之间的地址 |
数据类型只规定了变量占用的内存空间,与变量保存的内容无关。
换言之,可以用char保存数值,也可以用long保存字符。
计量单位
计量单位:
| 全称 | 符号 | 中文 | 单位换算 |
|---|---|---|---|
| bit | b | 位 | - |
| byte | B | 字节 | 1B = 8b |
| kilobyte | KB | 千字节 | 1KB = 1024B |
| mebibyte | MB | 兆字节 | 1MB = 1024KB |
| …… | …… | …… | …… |
构造类型:
| 名称 |
|---|
| 数组 |
| 结构体 |
| 共用体 |
| 枚举 |
类型装换
- 自动类型转换(不考虑数值溢出)
| 过程 | 说明 |
|---|---|
| 浮点型 > 整型 | 只保留整数部分,小数部分被舍弃,损失精度 |
| 整型 > 浮点型 | 不会损失精度,只改变类型 |
| 单精度浮点 > 双精度浮点 | 在尾部添0,不损失精度 |
| 双精度浮点 > 单精度浮点 | 四舍五入截断,损失精度 |
| 字符型 > 整型 | 不损失精度,只改变类型 |
| 整型 > 字符型 | 只保留低8位,损失精度 |
- 强制类型转换
| 方法 | 说明 |
|---|---|
| (char)(x) | 将x转换到字符型 |
| (int)(x) | 将x转换到整型 |
| (long)(x) | 将x转换到长整型 |
| (float)(x) | 将x转换到单精度浮点型 |
| (double)(x) | 将x转换到双精度浮点型 |
也可以加上
unsigned关键字,即可转成对应的无符号类型
指针和数组
- 指针
使用取地址运算符(&)可以获取对象的指针。
例程:
#include <stdio.h>
int main(){
char a = 10;
char b;//定义两个单字节变量
//定义一个可以指向单字节对象的指针
char *p1,*p2;//指针未初始化,指向地址未知
p1 = &a;//指针p1现在指向变量a
p2 = p1;//指针p2现在也指向变量a
b = *p2;//先从p2指向的地址读取数值,然后赋值给b
printf("%d",b);//输出10
return(0);
}
注意
*的使用
- 数组
数组是一系列变量的集合,在内存中连续分布,用指针可以快速访问。
例程:
#include <stdio.h>
int main(){
char a[5] = {1,2,3,4,5};
char b[5];
b[2] = a[0];
printf("%d",b[2]);//输出1
return(0);
}
内存映射:
| 地址 | 变量 |
|---|---|
| X | a[0] |
| X+1 | a[1] |
| X+2 | a[2] |
| X+3 | a[3] |
| X+4 | a[4] |
X代表a[0]被分配到的地址
因为是char类型的数组,所以每个元素占用1字节,char a[5]就占用5字节
- 使用指针访问数组
例程:
#include <stdio.h>
int main(){
char a[5] = {1,2,3,4,5};
char b,c;
char *p1,*p2;
p1 = &a[0];//p1指向a[0]
p2 = a;//p2也指向a[0]
b = *p1+3;//将p1+3位置的值赋值给b(即a[3])
c = *p2+4;//将a[4]赋值给c
printf("%d,%d",b,c);//输出4,5
return(0);
}
例程中的
p1 = &a[0]和p2 = a;是等价的
使用指针访问数组一定要注意数组的上下限
本文链接:https://blog.chrxw.com/archives/2020/03/01/993.html
转载请保留本文链接,谢谢