数组存储与指针学习笔记(一)数据类型与存储、数据对齐、数据移植、typedef

本文是关于C++中数据类型、存储、指针和数据对齐的学习笔记。深入探讨了大端模式与小端模式、有符号数与无符号数的区别、数据溢出的影响及处理,以及数据对齐的重要性。还介绍了Linux内核中的size_t类型和typedef的使用,强调了代码的可移植性和typedef的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数据类型与存储

  类型,是一组数值及对该组数值进行各种操作的集合。同一种类型的数据,在不同的处理器平台下,存储方式可能不一样。不同类型的数据,在同一个处理器平台下,存储方式和运算规则也可能不一样。很多人都说指针是C语言的灵魂,我认为存储才是C语言的精髓和灵魂。
  认识一下ANSI C关键字 和 C99/C11新增关键字。关键字里,除了控制程序结构的一些关键字,绝大部分都与数据类型和存储相关。
在这里插入图片描述
在这里插入图片描述

1.1 大端模式与小端模式

  在计算机中,位(bit)是最小的存储单位,通常使用一个电容器来表示:充电时高电位表示1,放电时低电位表示0。8个bit组成一字节(Byte),字节是计算机最基本的存储单位,也是最小的寻址单元,计算机通常以字节为单位进行寻址。字(Word)代表计算机处理指令或数据的二进制数位数,是计算机进行数据存储和数据处理的运算的单位。在一个32位的计算机系统中,通常4字节组成一个字(Word),字是软件开发者常用的存储单位。(注意:一个字并不都是占4字节,通常由系统硬件(总线,CPU命令字位数等)有关,在16位的系统中(比如8086微机) 1字 (word)= 2字节(byte)= 16(bit),在32位的系统中(比如win32) 1字(word)= 4字节(byte)=32(bit),在64位的系统中(比如win64)1字(word)= 8字节(byte)=64(bit))。

  • 字节序
      不同字节的数据在内存中的存储顺序被称为字节序。根据字节序的不同,我们一般将存储模式分为大端模式和小端模式。

    • 大端模式:高地址存储高字节数据,低地址存储低字节数据。
    • 小端模式:高地址存储低字节数据,低地址存储高字节数据。
      在这里插入图片描述
        常用的处理器中,ARM、X86、DSP一般都采用小端模式,而IBM、Sun、PowerPC架构的处理器一般都采用大端模式。
        如何判断程序运行的当前平台是大端模式还是小端模式呢?很简单,我们只需要将一个整型变量赋值给字符型变量,通常会发生"截断",将会给低8位的字节赋值到字符型变量,通过打印就可以判断是大端模式还是小端模式。
    #include <stdio.h>
    
    int main(void)
    {
         
    	int a = 0x11223344;
    	char b;
    	b = a;
    	if(b==0x44)
    		printf("Little endian\r\n");
    	else
    		printf("Big endian\r\n"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值