C: sizeof()

sizeof()

sizeof() 定义

sizeof()是一个返回一个对象或者类型所占的内存字节数的操作符,返回的类型为size_t, 定义为 typedef unsigned int size_t; 所以实际上就是无符号整型,可用 %u 、%o 、%x 来输出结果。

*在xcode中,似乎被定义为 typedef long unsigned int size_t; ,需要用%lu来输出。

sizeof() 用法

基本类型大小

#include <stdio.h>

int main(){
    int test_i;
    unsigned int test_ui;
    short int test_si;
    short unsigned int test_sui;
    long int test_li;
    long unsigned int test_lui;
    char test_c;
    double test_d;
    float test_f;
    printf("%lu,%lu,%lu,%lu,%lu,%lu,%lu,%lu,%lu\n",sizeof(test_i),sizeof(test_ui),sizeof(test_si),sizeof(test_sui),sizeof(test_li),sizeof(test_lui),sizeof(test_c),sizeof(test_d),sizeof(test_f));
    
}

结果为

4,4,2,2,8,8,1,8,4
Program ended with exit code: 0

(参照C:基本类型

数组大小

#include <stdio.h>

int main(){
    char ac[5]={"abcde"};
    char ac2[]={"abcde"};
    char ac3[]={"a","b","c","d","e"};
    printf("%lu,%lu,%lu\n",sizeof(ac),sizeof(ac2),sizeof(ac3));
    
    return 0;
}

ac在初始化时被定义了大小,所以超出部分不会被录入。
ac2是默认大小,录入所有输入字符组成数组,但是实际上输入完成之后,会自动生成一个占位符 \0 ,是告诉编译器字符到此结束,所以比预期多一个字符。
ac3 是错误的录入方式,应为 ac3[0]="a"

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值