iOS面试汇总C++基础知识

sizeof与strlen的区别

2017-03-20  本文已影响70人  安然_fc00

先看msdn的官方解释:

strlen——get the length of a string.
size_t strlen(const char *string);
Each ofthese functions returns the number of characters instring, notincluding the terminating null character.
//函数返回string里的字符数,不包括终止字符'\0'

sizeof
The sizeof keyword gives the amount of storage, in bytes, associated with a variable or atype (including aggregate types). This keyword returns a value of type size_t.
//返回变量或类型(包括集合类型)存储空间的大小

When appliedto a structure type or variable,sizeof returns the actual size, whichmay include padding bytes inserted for alignment. When applied to a statically dimensioned array,sizeof returns the size of the entire array. The sizeofoperator cannot return the size of dynamically allocated arrays or externalarrays.
//应用结构体类型或变量的时候,sizeof()返回实际大小,包括为对齐而填充的字节。当应用到静态数组时,sizeof()返回整个数组的大小。sizeof()不会返回动态分配数组或扩展数组的大小。

sizeof与strlen有以下区别:

练习

char str[]="hello";
char *p=str;
int n=10;
//请计算
sizeof(str);
sizeof(p);
sizeof(n);
void func(char str[100])
{
    sizeof(str);
}
void *p=malloc(100);
sizeof(p);

答案

char str[]="hello";
char *p=str;
int n=10;
//请计算
sizeof(str);//6,5+1=6,1代表'\0'
sizeof(p);//4,代表指针
sizeof(n);//4,整形占据的存储空间
void func(char str[100])
{
    sizeof(str);//4,此时str已经转换为指针了
}
void *p=malloc(100);
sizeof(p);//4,指针大小

sizeof

上一篇下一篇

猜你喜欢

热点阅读