在学数据的存储之前,我们先了解一下何为debug
debug(调试):除错 发现和减少计算机程序中错误的过程
发现程序问题的所在
以隔离,消除等方式对错误定位
确定错误产生的原因
提出解决问题的方案
交给程序重新改正,重新测试
- c语言类型
- 一、整型存储
- 二、浮点数的存储
- 三、内存的具体布局
- 1.引入库
- 2.读入数据
- 总结
c语言类型
c语言类型==内置类型+自定义类型(构造类型)==整型+浮点型+构造+(数组类型int arr[10] 类型int [10] 结构体类型 枚举类型 联合类型)+ 指针 +空类型
类型一来决定了这个类型开辟的空间大小,一来决定了如何看待内存空间的视角
一、整型存储
整型存储 int a=-10;
内存中存二进制补码:1111 1111 1111 1111 1111 1111 1111 0110
转换为16进制 ff ff ff f6
unsigned char(0----2^8-1) (-127----128)
大端小端:
大端:数据的高位存在低地址中,低位存在高地址中
小端:数据的低位存在高地址中,高位存在低地址中
低地址————————>高地址
11 22 33 44(大端 44 33 22 11(小端
指针类型解引用决定了指针解引用操作可以访问几个字节 决定了+1或-1加的是几个字节
int main()
{ int a=1;
char*p=(char*)&a;
if(*p==1)
{
printf("小端");
}
else printf("大端");
return 0;
习题(1) 无符号数>=0 ,所以下面的程序进入死循环。
int main()
{
unsigned int i;
for(i=9;i>=0;i--)
{ printf("%u",i)}
}
习题(2)i== -1 -2 -3... -128 ----->127 3 2 1 0 字符串长度 (到0之前)(127+128=255)
int main()
{
char a[1000];
int i;
for(i=0;i<1000;i++)
{
a[i]=-1-i;
}
printf("%d",strlen(a));
}
二.浮点型在内存中的存储
1.
int main()
{
int n=9;
float *pFloat=(float*)&n;
printf("%d",n);
printf("%f",*pFloat);
*pFloat=9.0;
printf("%d",n);
printf("%f",*pFloat);
}
结果为9 0.000000 1091567616 9.000000
(三)内存的具体存储
计算机内部的程序的内存相互独立(A不可访问B)
| 内存2区(B) |
| 内存1区(A) |
栈区:存储临时变量(当变量超出当前作用域会弹出)
分别int a,b,c,d,e;则在内存中存储为:
| e |
| d |
| c |
| b |
| a |
堆区:开辟大的内存空间(对动态内存进行分配)————开发人员分配,使用完都释放
数据区:存放全局变量,常量,静态变量
代码区:存储可执行代码



