【C语言】数据在内存中存储

本文介绍了C语言中数据在内存中的存储方式,包括数据类型、整型和浮点型的存储细节。讲解了补码的概念,以及如何通过程序判断字节存储顺序。此外,还探讨了不同类型转换时的数据截断和整型提升现象,并提供了相关练习题。
摘要由CSDN通过智能技术生成

目录

1、数据类型

2、整形在内存中的存储

小练习:

3.浮点型在内存中的存储


1、数据类型

类型的重要意义:决定了数据在内存中占用的空间,对数据的类型管理,可以高效利用内存空间。

类型基本分类:

1. 整形类型

char:unsigned char / signed char (char 根据编译器实现不同,一些会默认为char == signed char,另一些会被认为是 char == unsigned char,vs中为默认有符号的)

short:unsigned short / signed short == 在编译器可以省略为short

int:unsigned int / signed int == 在编译器可以省略为int

long:unsigned long/ signed long == 在编译器可以省略为long

long long:unsigned long long / signed long long == 在编译器可以省略为long long

2.浮点类型

float

double

3:构造类型(自定义类型)

数组类型:arr[ ]

结构体类型:struct

枚举类型:enum

联合类型:union

4.指针类型

int * pi

char * pch

float * pf

void * pv (空指针可以接受任何数据类型的指针,但不能直接拿来进行解引用操作或者对指针进行偏移,需要先将其强制类型转换为需要的数据类型再进行操作。eg: *(char *)pv

5.空类型

void 表示空类型,即无类型

通常用于三种情况

1.函数的返回类型 eg: void swap(int x, int y)

2.函数的参数类型 eg: int main(void)

3.指针类型 eg void * pv

2、整形在内存中的存储

整型类型的取值范围限定在 <limits.h>中查看

A 、存储形式

内存存储的最小单元是一个字节,即八个比特位。一个比特位存储0或1。

原码:即将数值按照二进制翻译过来。

反码:有符号位,符号位不变,其余按位取反即为反码。

补码:反码加1即为补码

由补码反推回原码有两种方式:

1.先补码减1得到反码,再除符号位外依次取反即得到原码。

2.与从原码到补码方法相同,补码先除符号位取反再加一得到原码

整形在内存中的存储都是以补码形式存储

B、存储顺序

因为整形中除了char类型是一个字节的大小,其他整形类型的大小都超过了一个字节,在内存中,比如int类型的四个字节是按照什么顺序在内存中由低地址到高地址依次存储的呢?

如果数据中的低位存储在内存中的低地址,高位存储于内存中的高地址,则是小段字节存储;

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值