C语言基础入门48篇_11_sizeof运算符(返回数据、变量占用内存字节数,返回程序编译运行的位数是32位(4字节)还是64位(8字节);计算机地址与内存空间的关系)

sizeof是求字节数运算符

  • 其基本使用方法是:sizeof(n),n可以为变量本身,也可以为变量类型。
  • sizeof(n)将在编译时被替换为n在内存中占用的字节数。

1. 返回各个基本数据类型在内存中的大小

#include <stdio.h>

int main(int argc, char* argv[])
{
    printf("sizeof(char):%d\r\n", sizeof(char));
    printf("sizeof(short):%d\r\n", sizeof(short));
    printf("sizeof(int):%d\r\n", sizeof(int));
    printf("sizeof(long):%d\r\n", sizeof(long));
    printf("sizeof(float):%d\r\n", sizeof(float));
    printf("sizeof(double):%d\r\n", sizeof(double));
    return 0;
}

运行结果:
在这里插入图片描述

2. 对变量求字节数

#include <stdio.h>

int main(int argc, char* argv[])
{
    int nValue = 0;
    short sValue = 0;
    printf("%d, %d\r\n", sizeof(nValue), sizeof(sValue));
    return 0;
}

运行结果:
在这里插入图片描述

3. 应用实例


判断当前运行程序的位数,查看是32位还是64位,32位系统中指针大小为4字节,64位系统中为8位字节。

int main(int argc, char* argv[])
{
    printf("sizeof(char*): %d\r\n", sizeof(char*));
    return 0;
}
  • 32位编译的情况下指针大小为4个字节
    在这里插入图片描述
  • 64位编译的情况下指针大小为8个字节
    在这里插入图片描述

4. 计算机地址与内存空间的关系


一、 我们知道计算机的内存单位有 比特位bit(也就是二进制位1/0)、字节byte、kb、mb、gb等等,其中比特位是计算机最小的内存单元,且满足:8bit=1byte(习惯用B表示)

    1024B=1kb

    1024kb=1mb(MB)

    1024M=1gb(GB)

二、我们使用的计算机有32位和64位计算机,相信大家都有个疑惑32位和64位到底是什么意思呢?简单通俗地讲,可以理解为32位计算机有32条地址线(数据线)那么64位计算机就有64条地址线(数据线),因为每条地址线是通电的,那么就可以产生高低电平,高电平用’1’表示,低电平用’0’表示,'1’和’0’就可以构成二进制。那么以32位计算机为例。

32位计算机就有32个二进制位,计算机中每个地址都由这32个二进制位组成,那么可以组成2^32个地址,即4,294,967,296个地址。那就有个问题每个地址指向的内存单元是多大呢?一个比特?一个字节(8个比特)?还是更大…

答案是一个地址指向的内存单元是一个字节,也就是说一个地址表示一个字节的内存,那么4,294,967,296个地址,就指向了4,294,967,296个字节的内存单元,用上面的等式换算一下,最终等于4GB,也就是说32位的计算机可以访问的最大内存空间为4GB。

64位的计算机,用同样的方法计算是170多亿GB,但实际最多访问128GB内存空间。

4.学习视频地址:sizeof运算符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十月旧城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值