sizeof()和strlen()

sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。

它不是函数。

sizeof操作符以字节形式给出其操作数的存储大小。

操作数可以是一个表达式或在括号内的类型名。

操作数的存储大小由操作数的类型决定。

用法:sizeof(类型说明符,变量名,数组或表达式);

定义

sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。

其返回值类型为size_t,在头文件stddef.h中定义。这是一个依赖编译系统的的值。

sizeof(char)       1

int i

sizeof(i)              4

sizeof(i++)         4      sizeof的操作数是表达式,这个表达式并不会被计算

char a[10]

sizeof(a)            10


strlen是一个函数所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含“\0”)。

extern unsigned int strlen(char *s);其原型为size_t strlen(const char *string);

头文件:string.h

格式:strlen (字符数组名)

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

说明:返回s的长度,不包括结束符NULL。

这两个其实没有多大的联系。sizeof操作符一般用来计算某个类型或对象的大小,比如结构体,类或内置类型。
strlen是函数,专门用来计算字符串的长度,计算方法是从你提供的字符指针开始计算字符个数,直到遇见结束符'\0'。计算字符串长度就用strlen

需要注意没有‘\0’的字符串用strlen得到的值纯属巧合

int mystrlen1(char *StrDest)
{
	int len = 0;  
	for(int i = 0; StrDest[i] != '\0'; i++)  
		len++;  
	return len;
}

int mystrlen2(const char *StrDest)  
{  
	int i;  
	i=0;  
	while((*StrDest++)!='\0')  
	{   
		i++;  
	}//从字符串第一个字符起计数,只遇到字符串结束标志'\0’才停止计数  
	return i;  
}


int mystrlen3(const char *StrDest)  
{  
	if(*StrDest == '\0')   
		return 0;  
	return (1 + mystrlen3(++StrDest));  
}
//当参数传递的过来的地址上内存为'\0',
//那么就返回0,当不是'\0'就表明地址上存储的是一个字符,那么计数就是1,然后地址加1调用函数本身。当遇到'\0' 结束如此循环。



相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页