在C++中,char *s,sizeof(s)和strlen(s)有什么不同啊?

如题所述

strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。
sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。

char aa[10];cout<<strlen(aa)<<endl; //结果是不定的   
char aa[10]={'\0'}; cout<<strlen(aa)<<endl; //结果为0   
char aa[10]="jun"; cout<<strlen(aa)<<endl; //结果为3   
而sizeof()函数返回的是变量声明后所占的内存数,不是实际长度。   
sizeof(aa) 返回10   int a[10]; sizeof(a) 返回40追问

char aa[10];cout<<strlen(aa)<<endl; //结果是不定的
为什么啊

追答

因为是要遇到\0才判断结束,这里的aa[10]只是声明了一个10位的字符数组,但是还没有赋值,里面还是空的,没有\0的存在,所以不能确定长度,只有赋值之后才能确定长度

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-10-13
sizeof(s)=sizeof(char*)这个求的是s这个指针的长度结果是4字节,即32位的二进制数
char* s=char s[N],strlen(s)求的是s[N]这个字符串的长度 结果是N
第2个回答  2011-10-13
追问char aa[10];cout<<strlen(aa)<<endl; //结果是不定的
为什么啊
回答因为是要遇到\0才判断结束,这里的aa[10]只是声明了一个10位的字符数组,但是还没有赋值,里面还是空的,没有\0的存在,所以不能确定长度,只有赋值之后才能确定长度

定义之后 初始化 很重要啊,最好在定义变量时候都初始化,赋值。
第3个回答  2011-10-13
定义一个字符串指针S
指针S的数据类型长度
S所指字符串长度

在C++中,char *s,sizeof(s)和strlen(s)有什么不同啊?
sizeof是C\/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。char aa[10];cout<<strlen(aa)<<endl; \/\/结果是不定的 char aa[10]={'\\0'}; cout<<strlen(aa)<<endl; \/\/结果为0 char aa[10]="jun"; cout<<strlen(aa)<<endl; \/\/结果为3 ...

sizeof和strlen区别
sizeof和strlen区别就是含义不同,运行结果不同等。strlen表示的是一个计数器的工作,它是从内存的某个位置(这里的位置可以是字符串开头,中间某个位置,也可以是某个不确定的内存区域)开始扫描,然后直至碰到第一个字符串结束符'\\0'为止,然后返回计数器值。sizeof在C语言中,是用于判断数据类型或者...

c++高手 关于sizeof和strlen的不同
首先:sizeof得到是变量或者类型的长度,对于变量来说,得到的是其分配的内存的大小,其是以字节为单位的,而对于数组来说, 可以用数组名作为其参数,也可以用数组中的某一个单元作为其参数,但此时计算出来的长度是不同的,例如:int b;char a[10];char *p=a;b = sizeof a;\/\/b=10现在计算...

c++详细讲解
sizeof是求字节数大小,strlen是求字符串长度。sizeof(s)是求s的字节数大小,此时s是一个指针变量(int型),而在C++中一个指针变量固定占4个字节。sizeof(*s)是求*s的字节数大小,而*s是char类型,在C++中一个char变量占1个字节。strlen(s)是求s指向的字符串的长度,即为5。

c语言sizeof和strlen的区别
(2)strlen:做的是一个计数器。2、用法上的区别 (1)sizeof:sizeof( type_name ); \/\/ sizeof(type); 在编译时有效,而不是在运行时有效。(2)strlen:extern unsigned int strlen(char *s); 返回s的长度,不包含终止符NULL。定义 sizeof是C\/C++中的一个操作符(operator),简单的说...

C++——sizeof & strlen
在使用C++编程时,常常会遇到sizeof和strlen这两个操作符和函数。以下是对它们区别的详细解释:1. sizeof操作符的结果是size_t类型,在头文件中定义为unsigned int类型,它能容纳实现所建立的最大对象的字节大小。2. sizeof是一个运算符,而strlen是一个函数。3. sizeof可以用类型做参数,而strlen...

C++中sizeof和strlen的区别是什么?
strlen:是C标准库中的字符串函数,用于统计字符的个数。sizeof:是c语言中的运算符,确切的说是一个编译时运算符,用于统计类型或者变量所占的内存字节数。示例,以32位系统为例。char *str = "hello";strlen(str); \/\/它的值是5,因为hello这个字符串有5个字符sizeof(str); \/\/它的值是4,...

C语言中sizeof与strlen的区别是什么
(1)sizeof:sizeof( type_name ); \/\/ sizeof(type); 在编译时有效,而不是在运行时有效。(2)strlen:extern unsigned int strlen(char *s); 返回s的长度,不包含终止符NULL。3、规则上的区别 (1)sizeof:可用于任何变量名,类型名或常量值。 当用于变量名(不是数组名)或常量时,...

C++中getlen()、strlen()、sizeof()三个函数的区别是什么?
下面具体说一下strlen()和sizeof()函数。strlen()函数原型:extern unsigned int strlen(char *s);,在Visual C++ 6.0中,原型为size_t strlen( const char *string );,其中size_t实际上是长整型long。头文件:string.h 功能:计算字符串s的(unsigned int型)长度 说明:返回s的长度,不包括...

C语言中sizeof和strlen函数区别在哪?
sizeof(f()));输出的结果是sizeof(short),即2。4.数组做sizeof的参数不退化,传递给strlen就退化为指针了。5.大部分编译程序 在编译的时候就把sizeof计算过了 是类型或是变量的长度这就是sizeof(x)可以用来定义数组维数的原因 char str[20]="0123456789";int a=strlen(str);\/\/a=10;int ...

相似回答