sizeof(char),sizeof(char*),sizeof(char[4]),

32位系统,地址长度是32位(bit),也就是4Byte; 64位系统,地址长度是64位(bit),也就是8Byte

运用1:

char a[] = "hello world"; //自动为末尾加上'/0'
char b[14] = "hello world";
char *p = a;
char *dd = "01234";
NSLog(@"%ld", sizeof(a));
NSLog(@"%ld", sizeof(b));
NSLog(@"%ld", sizeof(p));
NSLog(@"%ld", sizeof(dd)); //dd是指向字符串常量的字符指针
NSLog(@"%ld", sizeof(*dd)); //*dd是第一个字符 (所占大小由数据类型决定)

答案:

32位机器上运行: 12 14 4 4 1

64位机器上运行: 12 14 8 8 1

运用2:

NSLog(@"%lu,%lu,%lu,%lu",sizeof(char),sizeof(char*),sizeof(char[4]),sizeof((char*)(12)));
NSLog(@"%lu,%lu,%lu,%lu",sizeof(char),sizeof(char*),sizeof(char[0]),sizeof((char*)(12)));

32位机器上运行: 1,4,4,4    64位机器上运行: 1,8,4,8

32位机器上运行: 1,4,0,4    64位机器上运行: 1,8,0,8


数据类型所占字节数:

32位和64位下

相同的:

char --1,   short int -- 2,   int -- 4,  unsingned int  -- 4,   float -- 4, double -- 8 , long long 8,

不同的:

32位下:   char* -- 4 , long -- 4  , unsigned long -- 4 

64位下:   char* -- 8 , long -- 8  , unsigned long -- 8


sizeof 和 strlen 简单的区别:

sizeof是运算符,它计算的是系统分配的空间大小,不是存储数据的大小

strlen是函数,()里面必须是字符串指针或者字符串常量,返回的是/0前面的字符个数。

例子

char dd[10] = "01234";
NSLog(@"%ld,%ld", sizeof(dd),strlen(dd));

输出:10,5


 

转载于:https://my.oschina.net/liuchuanfeng/blog/663639

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值