注意字符串的strlen与sizeof的差别】的更多相关文章

unsigned char AT_RESET[]="r\r\n"; printf("strlen=%d sizeof=%d\n",strlen(AT_RESET),sizeof(AT_RESET)); 结果:strlen=3 sizeof=4…
一.sizeof     sizeof(...)是运算符,而不是一个函数.     一个简单的样例: int a; cout<<sizeof a<<endl;     在头文件里typedef为unsigned int,其值在编译时即计算好了,參数能够是数组.指针.类型.对象.函数等.     它的功能是:获得保证能容纳实现所建立的最大对象的字节大小.     因为在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小.     实际上,用sizeof来返回类型以及静态…
本人c语言初学菜鸟一枚,今天通过敲了一段简单代码,发现strlen和sizeof之间的一些关系,总结如下: 用strlen计算数组长度要考虑进去\0 用sizeof计算字符串长度也要考虑进去\0 而sizeof在计算数组和strlen计算字符串长度(它们自己的领域里面)则不需要考虑\0 总结:字符数组与字符串不是相同的东西,在计算长度时,要用各自该用的东西(数组用sizeof,字符串用strlen) 例如下面这段代码,计算数组长度用到了strlen,那么b[]内必须为4,要考虑\0,且不能为其他…
在学习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…
在学习C语言中发现strlen和sizeof的关系不是很明确,今天来总结一下这两个的区别: sizeof 是运算符,用来计算字节数,在计算字符串数组大小时包含(\0) 在编译时计算大小,参数可以是数组.指针.类型.对象.函数等. strlen 是函数,用来测试字符串长度,不包含(\0) 在运行时计算大小,参数是字符型指针. #include <stdio.h> int main(void) { int size1, size2; char a[] = "hello"; si…
用双引号定义并且声明的时候明确指定数组大小的话,sizeof就会返回指定的大小,不会自动加1: char str2[10] = "hello c"; printf("strlen = %ld\n", strlen(str2)); printf("sizeof = %ld\n", sizeof(str2)); //strlen = 7 //sizeof = 10 用大括号定义并且声明的时候明确指定数组大小的话,sizeof就会返回指定的大小,不会自…
strlen表示的实际的字符串长度,不会把字符串结束符'\0'计算进去,而sizeof则不是实际的字符串长度,它会把字符串的结束标识符'\0'也包含进去. #include<stdio.h> int main() { char cdata1[125]="hello"; int len1=strlen(cdata1); char cdata2[]="hello"; int len2=strlen(cdata2); printf("cdata1实际…
#include <string.h> int _tmain(int argc, _TCHAR* argv[]) { char *pMyChar = "I like coding !"; char myChar[] = "I like coding !"; ),num2(); num1 = sizeof(pMyChar); //num1=4,32位系统下指针占4个字节 num2 = sizeof(myChar); //num2=16, 15个字符+字符结…
#include<stdio.h>#include<string.h>  int main(){ int a,i=0; char ch[10000]; while(scanf("%d",&a)!=EOF&&a!=-1) {  ch[i++]=a; } /* 测试结果 sizeof 测试的是总空间  包括\0  strlen 测试的 是遇到第一个\0之前的长度  */ printf("sizeof计算的长度:%d\n",…
strlen计算不包括终止符null字节的字符串长度,而sizeof则计算包括终止null字节的长度.另一个差别,strlen需要一次函数调用,而sizeof在编译时计算缓冲区长度.…
在字符常量和字符串常量的博文里有提: 求字符串数组的长度 标准库函数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&…
遇到个坑,定义了一个字符数组 unsigned ;i<;i++) { buff[i] = ; } 然后用串口发送函数: write(fd, buff, strlen(buff)); 却发现串口一直未收到数据,原来是strlen遇到'\0'则结束计算长度.所以发送的数据一直为空. 关于sizeof与strlen的具体介绍:http://blog.csdn.net/sjtu_huang/article/details/6533140 strle是用来计算字符串长度,sizeof是用来计算字符数组长度…
1.以字符串形式出现的,编译器都会为该字符串自动添加一个\0作为结尾 如在代码中写"abc",编译器帮你存储的是"abc\0". 2.数组的类型是由该数组所存放的东西的类型以及数组本身的大小决定的,如char s1[3]和char s2[4],s1的类型就是char[3],s2的类型就是char[4] 字符串常量的类型可以理解为相应字符常量数组的类型,如"abc"的类型可以看成是const char[4] 3.字符数组和指针的区别 (1)把&qu…
1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型.该类型保证能容纳实现所建立的最大对象的字节大小. 2.sizeof是算符,strlen是函数. 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的.sizeof还可以用函数做参数,比如: short f();printf("%d\n", sizeof(f()));输出的结果是sizeof(short),即2. 4.数组做sizeof的…
转自:http://www.cppblog.com/liangbo/archive/2006/10/06/13394.html 1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型.该类型保证能容纳实现所建立的最大对象的字节大小. 2.sizeof是算符,strlen是函数. 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的. 4.数组做sizeof的参数不退化,传递给strlen就退化为指针了…
自己小结: sizeof使用时,若是数组变量,则是数组变量占的大小 char a[10]; sizeof(a)=10 若是指针,则为指针大小,数组变量作为函数参数传递时,会退化成指针,且函数内是不知道原数组大小的 char *s="abcdddddd"; sizeof(s) = 4 指针 void f(char a[]) {sizeof(a) = 4 指针}     下面转载自百度百科 --------------------------------------------------…
其实二者的区别还是很大的,首先strlen计算的长度不包括字符串最后的终止null字节, 而sizeof则计算包括终止null的缓冲区长度.还有一点很容易被忽略,strlen需要一次函数调用, 即它是个函数,而sizeof是个运算符,缓冲区已用已知字符进行了初始化,其长度是固定的,所以, sizeof在在编译时计算时缓冲区的长度.因而,大神总是忠告我们,不要将strlen写入循环体内, 可sizeof没有这方面的考虑.…
#include<stdio.h>#include<string.h>#include<string>#include<iostream>using namespace std; int main(){ int a[] = {1,2,3,4,5}; int* b = a; char c[] = {'a','c','c'}; char* d = c; char e[] = "abcd"; char* f = "abcd"…
1. strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止. char aa[10];cout<<strlen(aa)<<endl; //结果是不定的 char aa[10]={'\0'}; cout<<strlen(aa)<<endl; //结果为0 char aa[10]="jun"; cout<…
strlen返回字符长度 而sizeof返回整个数组占多长,字符串的\0也会计入一个长度…
1.strlen() 时函数,他在程序运行时才能计算.它的参数类型要求时 char *,且必须是以'/0'结尾.数组在传入时已经退化为指针.它的作用是返回数组中字符串的长度. 2.sizeof()时运算符,它在程序编译时就已经计算好了,用于计算数据空间的字节数.所以它不能用于返回动态分配的内存空间大小,常用于静态分配的类型,对象,结构或数组所占的空间.返回值和他们所存储的内容没有关系. 当参数如下时,sizeof返回的值如下: 1.数组--返回的时数组空间的大小 char a[10] = "he…
先举个栗子: 字符串数组跟字符串指针,然后分别使用sizeof跟strlen看输出结果. char strA[] = "2017-7-19"; char *strB = "23333"; cout <<sizeof(a)<<ends<<sizeof(b)<<endl; 以上输出 10  4: a字符串数组长度为10,因为其包含了结束符'\0'; b字符串指针的长度是4,(32位机子下指针长度都是4,其他类型一致,无论指…
  strlen(返回字符串长度) 表头文件 #include <string.h> 定义函数 size_t strlen(const char *s); 函数说明 strlen()用来计算指定的字符串s的长度,不包括结束字符"\0". 返回值 返回字符串s的字符数. 范例 #include <stdio.h> #include <string.h> int main(int argc, char **argv) { char *str = &quo…
#include <stdio.h> #include <stdlib.h> #include <string.h> /* _Check_return_ _Ret_maybenull_ inline char* __CRTDECL strstr(_In_z_ char* const _String, _In_z_ char const* const _SubString) { return const_cast<char*>(strstr(static_ca…
strlen是函数. sizeof是操作符..以下一个简单的程序说明这件事: #include <iostream> #include <string.h> using namespace std; int main() { char str1[] = "To be or not to be"; cout << "sizeof [] : " << sizeof(str1) << endl; //str1占用…
PHP strlen() 函数 定义和用法 strlen() 函数返回字符串的长度. 语法 strlen(string) 参数:string <?php $str=‘中文a字1符‘; echo strlen($str); echo ‘<br />‘; echo mb_strlen($str,‘UTF8‘); //输出结果 //14 //6 ?> 结果分析:在strlen计算时,对待一个UTF8的中文字符是3个长度,所以“中文a字1符”长度是3*4+2=14 在mb_strlen计算…