C++-sizeof和strlen的区别】的更多相关文章

一.sizeof    sizeof(...)是运算符,而不是一个函数.    sizeof操作符的结果类型是size_t,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等.    它的功能是:获得保证能容纳实现所建立的最大对象的字节大小.    由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小.    实际上,用sizeof来返回类型以及静态分配的对象.结构或数组所占的空间,返回值跟对象.结构.数组所存储…
转自:http://www.cnblogs.com/carekee/articles/1630789.html 一.sizeof    sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等.    它的功能是:获得保证能容纳实现所建立的最大对象的字节大小.    由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小.实际上,用sizeof来返回类型以及静态分配的对象.结构或数组所占的…
Sizeof与Strlen的区别与联系 一.sizeof     sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等.     它的功能是:获得保证能容纳实现所建立的最大对象的字节大小.     由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小.实际上,用sizeof来返回类型以及静态分配的对象.结构或数组所占的空间,返回值跟对象.结构.数组所存储的内容没有关系.     具体…
一.sizeof    sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等.    它的功能是:获得保证能容纳实现所建立的最大对象的字节大小.    由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小.实际上,用sizeof来返回类型以及静态分配的对象.结构或数组所占的空间,返回值跟对象.结构.数组所存储的内容没有关系.    具体而言,当参数分别如下时,sizeof返回的值表示…
link:http://blog.csdn.net/ghevinn/article/details/9974967    strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值.   strlen和sizeof的区别:             strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,…
原文地址:http://www.cnblogs.com/carekee/articles/1630789.html 1.sizeof  sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等.    它的功能是:获得保证能容纳实现所建立的最大对象的字节大小.    由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小.实际上,用sizeof来返回类型以及静态分配的对象.结构或数组所占的…
一.sizeof    sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等.    它的功能是:获得保证能容纳实现所建立的最大对象的字节大小.    由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小.实际上,用sizeof来返回类型以及静态分配的对象.结构或数组所占的空间,返回值跟对象.结构.数组所存储的内容没有关系.    具体而言,当参数分别如下时,sizeof返回的值表示…
本文转载自:http://www.cnblogs.com/carekee/articles/1630789.html Sizeof与Strlen的区别与联系 一.sizeof    sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等.    它的功能是:获得保证能容纳实现所建立的最大对象的字节大小.    由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小.实际上,用sizeof…
本节我也介绍下sizeof与strlen的区别,很简单,就几条: 1. sizeof是C++中的一个关键字,而strlen是C语言中的一个函数:2. sizeof求的是系统分配的内存总量,而strlen通常遇到'\0'时即结束求值计算3. sizeof可以用在任何类.结构体.对象.变量.类型等身上,strlen通常用于求字符串长度;4. sizeof在计算一个类类型或类对象的的大小时,需要考虑其数据成员的内存布局(编译器可能会保持内存对齐):5. sizeof是在编译期计算的,而strlen是在…
首先,来运行一段程序: #include "stdafx.h" #include <stdio.h> #include <string.h> int main() { char *a = "aaaa"; int x = sizeof(a); int y = strlen(a); printf("%d\n", x); printf("%d\n", y); return 0; } 运行结果为: 再看下面这段…
一.sizeof    sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等.    它的功能是:获得保证能容纳实现所建立的最大对象的字节大小.    由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小.实际上,用sizeof来返回类型以及静态分配的对象.结构或数组所占的空间,返回值跟对象.结构.数组所存储的内容没有关系.    具体而言,当参数分别如下时,sizeof返回的值表示…
sizeof和strlen的区别: 1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型. 该类型保证能容纳实现所建立的最大对象的字节大小. 2.sizeof是算符,strlen是函数. 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的. sizeof还可以用函数做参数,比如: short f(); printf("%d\n",sizeof(f())); 输出的结果是sizeof(sh…
在学习C语言和linux的时候,遇到了一些常见问题.题目,有些很简单,有些容易出错,本人水平有限,未免会出错,今天有时间,就将以前做的笔记,一一拿出来,写写blog. sizeof()和 strlen()的区别? 首先sizeof()是C语言提供的一个运算符,不是函数!它的作用主要是获得一个类型 或者一个对象里面内容的空间大小. strlen()是一个标准库函数函数,用于计算一个字符串的长度,但是不把字符 '\0'计算在内. 如char *buf="hello,world" strle…
sizeof 和 strlen 都是c/c++ 中常见的符号,他们的功能是判断数组长度.那么他么到底有什么区别 1.sizeof    不是函数,而是一个操作符.字节数的计算在程序编译时进行,而不是在程序执行的过程中才计算出来!  strlen      是一个函数,在程序运行期间计算出结果. 2.strlen的结果要在运行的时候才能计算出来,是用来计算字符串的实际长度,不是类型占内存的大小. 数组做sizeof的参数不退化,传递给strlen就退化为指针了. ]=";//str是编译期大小已经…
首先需要说明的是sizeof和strlen都可以求长度,但是却有很大的区别,简单来说可以概括为以下几点: 1.sizeof是一个关键字,而strlen确实一个函数. 2.sizeof求的是字节长度,而strlen求的却是实际长度. 比如int a=1;sizeof(a)==4而strlen(a)=1 3.sizeof求的是分配过来的长度,而strlen求的却是实际使用的长度. 比如:char a[30]="abcd"; sizeof(a)=30;而strlen(a)=4; 4.strl…
首先,strlen 是函数,sizeof 是运算操作符,二者得到的结果类型为 size_t,即 unsigned int 类型.大部分编译程序在编译的时候就把 sizeof 计算过了,而 strlen 的结果要在运行的时候才能计算出来. 对于以下语句: char *str1 = "asdfgh"; char str2[] = "asdfgh"; ] = {'a', 's', 'd'}; char str4[] = "as\0df"; 执行结果是:…
1.参数 sizeof是c/c++ 中的一个操作符,其作用是返回对象或数据类型所占的内存字节数. 用法:sizeof(对象).sizeof 对象.sizeof(类型) 如果类型做参数,返回的是该类型所占内存字节数, 对象做参数的几个常用的说明: sizeof(数组名)  返回的是数组所占空间字节数,  如:sizeof(数组名)/sizeof(数组元素类型)    计算数组大小. sizeof(指针) 返回指针类型大小(32位机为4字节) sizeof(*指针) 返回指针所指向数据类型的大小,如…
二者有本质上的区别 从定义可以知道sizeof只是一个operator,而strlen()则是定义一个定义在<string.h>中的函数;所以sizeof(string)是在计算string所占用的内存,包含了'\0'结尾符,strlen(string)则是用来计算字符串的长度,省略了'\0'. 详见:http://chuansu.iteye.com/blog/1433003…
要理解两者的区别,就要分别理解他们的本质 strlen(char *) 计算字符串的长度,内部实现是用一个循环计算字符串的长度,直到‘\0’为止 1.srtlen 是一个函数,参数只能为char 或者 string (sizeof是运算符,可以对好多类型作sizeof,如struct, class等) 2.对数组作sizeof不退化为指针,传递给strlen就退化为指针 3.对字符数组求,有区别,sizeof包含 '\0',strlen不包含'\0' char s[]="hello";…
#include <stdio.h> #include <stdlib.h> #include <string.h> //strlen与sizeof的区别 //strlen() 是函数 参数是字符串 并且必须一串结束符\0结尾 //sizeof是关键字 返回的是参数所占的内存数 在学习数据类型的时候有很大的帮助 void main() { ] = "love";//此处数组为什么会是5或者更大 是因为有默认的\0 ]={'a','b','c','\0…
1 sizeof是操作符,而strlen是库函数: 2 sizeof的参数可以为任意变量或类型,而strlen必须以char*做参数,且字符串必须以‘/0’结尾: 3 数组名用作sizeof参数时不会退化,而用作strlen参数时就会退化成指针: 4 大部分编译器在编译期计算sizeof的值,所以其结果可以用作常量,例如可以定义数组的维数,而strlen一定要到运行期才会被计算: 5 sizeof的参数如果是变量名,可以不加括号,因为其是运算符不是函数,而strlen必须加括号: 6 在计算字符…
strlenstrlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0').指实际字符串或字符数组的实际长度(不是所占空间的字节数).函数原型extern unsigned int strlen(char *s)意思是,他从指针指向的某个地址开始扫描,并读取字符,一直读到'\0'为止,不包括'\0'strlen用于字符数组或者指针 字符型数组char…
char *t = "我a"; char t1[MAX_PATH] = "aaaaaa"; char display1[MAX_PATH]; char display2[MAX_PATH]; int len = sizeof(t); int len1 = strlen(t); itoa(len, display1, 10); itoa(len1, display2, 10); out(display1); out(display2); 显示 sizeof 在取指针c…
1. 编译时计算运算符sizeof,可用类型或变量做参数,计算占用内存的大小.sizeof后若是类型必须加括弧,若是变量名可不加括弧.sizeof(x)可用来定义数组维数.如:printf("%d\n", sizeof(short));输出的结果为短整型的长度2.用结构类型或变量做参数时,sizeof 返回实际的大小,当用于静态数组时,sizeof 返回全部数组的尺寸.sizeof 操作符不能返回动态地被分派了的数组或外部的数组的尺寸 2. 运行时计算strlen,只能用char*做参…
1. 编译时计算运算符sizeof,可用类型或变量做参数,计算占用内存的大小.sizeof后若是类型必须加括弧,若是变量名可不加括弧.sizeof(x)可用来定义数组维数.如:printf("%d\n", sizeof(short));输出的结果为短整型的长度2.用结构类型或变量做参数时,sizeof 返回实际的大小,当用于静态数组时,sizeof 返回全部数组的尺寸.sizeof 操作符不能返回动态地被分派了的数组或外部的数组的尺寸 2. 运行时计算strlen,只能用char*做参…
1.sizeof operator sizeof是C语言的一种单目操作符,如C语言的其他操作符++.- - 等,它并不是函数. Queries size of the object or type. 1) returns size in bytes of the object representation of type. 2) returns size in bytes of the object representation of the type, that would be return…
1.sizeof sizeof为编译时期被替换,不会等到程序运行再来判断,所以sizeof返回的是数组的总字节数 #include<stdio.h> int main() { ]={'a','b'}; printf( } 2.strlen函数包含在string.h头文件中,该函数返回的是数组的长度,数组中有几个元素就返回几 #include<stdio.h> #include<string.h> int main() { ]={'a','b'}; printf( }…
1.数组在内存中是连续存放的,地址呈4个字节递增 2.数组的定义需要初始化,否则输出会已随机值输出 3.strlen()和sizeof()之间无关联:strlen():是求字符串长度的----只能针对字符串求长度---库函数----需要引用头文件---<string.h> sizeof():计算变量.数组类型的大小---单位是字节----操作符 4.strlen()--遇到'\0'停止,不算'\0'   sizeof()--遇到'\0'停止,算'\0' 可以发现:strlen求字符串长度,而s…
本文主要记录了 sizeof 操作符 和 strlen() 函数的区别,以及各自的用途.(在下才疏学浅,发现错误,还请留言指正) sizeof 和 strlen 的区别 示例代码如下: #include<stdio.h> int main() { ]="; printf("strlen(str)==%d\n",strlen(str));//计算字符串的长度(不包括0x00),结果:10 printf("sizeof(str)==%d\n",si…
Sizeof与Strlen的区别与联系 一.sizeof    sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等.    它的功能是:获得保证能容纳实现所建立的最大对象的字节大小.    由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小.实际上,用sizeof来返回类型以及静态分配的对象.结构或数组所占的空间,返回值跟对象.结构.数组所存储的内容没有关系.    具体而言,当…