C strlen vs sizeof】的更多相关文章

在学习C语言时以及面试中,经常会见到strlen()与sizeof()这一对容易混淆的概念,搞清楚这两个概念,往往考察了编程人员对语言的基本掌握能力. 首先大家先明确两个概念是: 1.strlen()是函数,而sizeof()是表面看起来像函数的关键字. 2.Strlen()求得是长度,针对的对象是字符串,而sizeof()求的是大小针对的是类型 之所以二者经常混淆,那是由于在使用过程中未能正确区分哪个是求长度,哪个是求大小,下面就具体讲解sizeof()与strlen()在各种情况下的长度与大…
strlen()和sizeof()的区别: strlen()——>C字符串库函数,返回字符串的真实长度.它是从内存某位置开始扫描,直到碰到结束符'\0'停止,返回计数器值. sizeof()——>操作符,返回的是变量声明后“占用”的内存大小,可能不是实际大小. int num; sizeof(num);  返回num占用内存大小.也可写作sizeof num (当后面是变量名时,可不加括号.) sizeof(int);  返回int型数据占用内存大小.(当后面是类型名时,一定要加括号.) 下面…
函数strlen()和sizeof的区别: #include<stdio.h> #include<stdlib.h> #include<string.h> #define SENTENCE "It is a cat" int main() { char name[40]; gets(name); printf("%s\n", name); printf("The size of name is %zd %d\nThe s…
用双引号定义并且声明的时候明确指定数组大小的话,sizeof就会返回指定的大小,不会自动加1: char str2[10] = "hello c"; printf("strlen = %ld\n", strlen(str2)); printf("sizeof = %ld\n", sizeof(str2)); //strlen = 7 //sizeof = 10 用大括号定义并且声明的时候明确指定数组大小的话,sizeof就会返回指定的大小,不会自…
unsigned char AT_RESET[]="r\r\n"; printf("strlen=%d sizeof=%d\n",strlen(AT_RESET),sizeof(AT_RESET)); 结果:strlen=3 sizeof=4…
本人c语言初学菜鸟一枚,今天通过敲了一段简单代码,发现strlen和sizeof之间的一些关系,总结如下: 用strlen计算数组长度要考虑进去\0 用sizeof计算字符串长度也要考虑进去\0 而sizeof在计算数组和strlen计算字符串长度(它们自己的领域里面)则不需要考虑\0 总结:字符数组与字符串不是相同的东西,在计算长度时,要用各自该用的东西(数组用sizeof,字符串用strlen) 例如下面这段代码,计算数组长度用到了strlen,那么b[]内必须为4,要考虑\0,且不能为其他…
在学习C语言中发现strlen和sizeof的关系不是很明确,今天来总结一下这两个的区别: sizeof 是运算符,用来计算字节数,在计算字符串数组大小时包含(\0) 在编译时计算大小,参数可以是数组.指针.类型.对象.函数等. strlen 是函数,用来测试字符串长度,不包含(\0) 在运行时计算大小,参数是字符型指针. #include <stdio.h> int main(void) { int size1, size2; char a[] = "hello"; si…
在字符常量和字符串常量的博文里有提: 求字符串数组的长度 标准库函数strlen(s)可以返回字符串s的长度,在头文件<string.h>里. strlen(s)的判断长度的依据是(s[i] != '\0'),所以返回值是字符串s的长度,而不是数组的长度. 如果要求数组的长度,用sizeof(数组名)/sizeof(数组名[0]). sizeof并不像strlen()是一个函数,他是一个操作符(operator),它的返回值是size_t,返回的是一个对象或类型所占用的内存字节数. 他有三种形…
1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型.该类型保证能容纳实现所建立的最大对象的字节大小.   2.sizeof是算符,strlen是函数.   3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的.sizeof还可以用函数做参数,比如: short f(); cout << sizeof(f()) << endl; 输出的结果是sizeof(short),即2. 4.数组…
void ngx_time_init(void) { ngx_cached_err_log_time.len = sizeof("1970/09/28 12:00:00") - 1; ngx_cached_http_time.len = sizeof("Mon, 28 Sep 1970 06:00:00 GMT") - 1; ngx_cached_http_log_time.len = sizeof("28/Sep/1970:12:00:00 +0600&…