strlen与sizeof

strlen

strlen是函数

头文件:<string.h>

作用:计算字符串的长度,不包括'\0'在内

strlen的参数只能是char* 且必须是以'\0'结尾的

strlen(char*)函数求的是字符串的实际长度( 即从开始到遇到第一个'\0' )

如果你只定义没有给它赋初值,返回的结果是不定的。

char a[10];

cout<<strlen(a)<<endl;  //结果不定

const char a[10]="\0"; 

cout<<strlen(a)<<endl; //输出0

const char a[10]="abc";

cout<<strlen(a)<<endl; //输出3

sizeof

sizeof是一个操作符(operator)

sizeof()返回的是变量声明后所占的内存数,不是实际长度

char str[20]="0123456789";

int a=strlen(str); //a=10; 实际长度

int b=sizeof(str); //b=20; 声明后占用的内存

数组的sizeof

数组的sizeof值等于数组所占用的内存字节数。

1)当字符数组表示字符串时,其sizeof值将’/0’计算进去。

char a[10];

sizeof(a)  //结果为10

char n[] = "abc";

sizeof(n) //结果为4

2)当数组为形参时,其sizeof值相当于指针的sizeof值。

void func(char a[3])

{

int c = sizeof(a); //c = 4,因为这里a不在是数组类型,而是指针,相当于char *a。

}

void func(char b[])

{

int c = sizeof(b); //c = 4,理由同上。

}

函数的sizeof

sizeof也可对一个函数调用求值,其结果是函数返回值类型的大小,函数并不会被调用。

对函数求值的形式:sizeof(函数名(实参表))

1)不可以对返回值类型为空的函数求值。

2)不可以对函数名求值。

3)对有参数的函数,在用sizeof时,须写上实参表。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目类型 a.C++与C差异(1-18) 1.C和C++中struct有什么区别? C没有Protection行为...
    阿面a阅读 7,728评论 0 10
  • iOS面试小贴士 ———————————————回答好下面的足够了------------------------...
    不言不爱阅读 2,023评论 0 7
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 3,404评论 0 6
  • 史上最全的iOS面试题及答案 iOS面试小贴士———————————————回答好下面的足够了----------...
    Style_伟阅读 2,469评论 0 35
  • 一、(一共三十题) 1.main() { int a[5]={1,2,3,4,5}; int *ptr=(int ...
    iOS_Alex阅读 1,004评论 0 0