【C语言】02-C语言字符串长度和OC字符串对象长度计算的比较

2 篇文章 1 订阅



OC字符串对象主要是用length来计算字符串的长度。而C语言字符串长度的计算方法主要有两个。一个是sizeof,一个是string.h头文件下的strlen。以下是它们各自计算的区别:

1、C语言中的sizeof

1.1 sizeof(str)主要计算的是字符串占用字节的大小,并且会把''\0'结束字符计算在内。

1.2 如果传递进来的是个指针字符串,则计算的是该指针占用的字节数大小,在32位系统下面占用大小是4,64位系统下面占用大小是8。

1.3 如果传递进来的是固定大小的字符串数组,则计算的是这个字符串数组占用的字节数大小。

1.4 一个中文汉字在sizeof中按照3个字节数来计算

1.5 一个字符串数组,如果中间包含'\0'字符,sizeof会把这个字符一起计算在内。


2、C语言中的strlen

2.1 strlen是在头文件string.h下,所以使用前要引入#include <string.h>

2.2 strlen计算的是字符串的实际字节数,即不包括结束字符'\0'在内

2.3 如果传递进来的是固定大小的字符串数组,会自动忽略字符串结束字符后面的内容

2.4 一个中文汉字在strlen中按照3个字节数来计算

2.5 一个字符串数组,如果中间包含'\0'字符,strlen会计算从字符串数组开头到这个'\0'字符之间的长度,而忽略从'\0'开始到字符串数组结尾的所有字符。


3、OC字符串对象的length方法

3.1 length是OC的字符串对象的一个方法,使用前要先创建一个OC字符串对象

3.2 length计算的是字数

3.3 一个中文汉字在length中按照一个字数来计算。这种计算字符串长度的方式比较常用。



#include <string.h>
#import <Foundation/Foundation.h>
int main()
{
    char *s="吩咐abc";
    char str[]="吩咐abc";
    char str100[100]="吩咐abc";
    
    //int size=sizeof(s);      // 结果是:8。在64位系统下面结果是8,32位系统下面应该是4。因为参数传递进来的是个指针变量,计算的是指针占用的字符串长度
    //int size=sizeof(str);    // 结果是:10。sizeof计算的是字符串占用字节的大小,并且包括'\0'结束符。中文一个字占用3个字节,3*2+3+1=10
    //int size=sizeof(str100); // 结果是100。因为传进来的是固定大小为100的字符串数组
    
     //int size=strlen(s);     //结果是:9。strlen计算的是指针指向的字符串的字符字节数,不包括结束字符在内。
    //int size = strlen(str);  //结果是:9。strlen计算的是字符串的实际字节数,不包括结束符在内。
    //int size=strlen(str100); //结果是:9。理由同上。

    NSString *string=@"吩咐abc";
    int size=[string length]; //结果是:5。字符串对象的length计算的是字数。中文也按照一个字数来计算。这种方式比较常用
    NSLog(@"%d",size);
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值