在C++中,char *s,sizeof(s)和strlen(s)有什么不同啊?
4个回答
展开全部
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
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的存在,所以不能确定长度,只有赋值之后才能确定长度
展开全部
sizeof(s)=sizeof(char*)这个求的是s这个指针的长度结果是4字节,即32位的二进制数
char* s=char s[N],strlen(s)求的是s[N]这个字符串的长度 结果是N
char* s=char s[N],strlen(s)求的是s[N]这个字符串的长度 结果是N
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
追问char aa[10];cout<<strlen(aa)<<endl; //结果是不定的
为什么啊
回答因为是要遇到\0才判断结束,这里的aa[10]只是声明了一个10位的字符数组,但是还没有赋值,里面还是空的,没有\0的存在,所以不能确定长度,只有赋值之后才能确定长度
定义之后 初始化 很重要啊,最好在定义变量时候都初始化,赋值。
为什么啊
回答因为是要遇到\0才判断结束,这里的aa[10]只是声明了一个10位的字符数组,但是还没有赋值,里面还是空的,没有\0的存在,所以不能确定长度,只有赋值之后才能确定长度
定义之后 初始化 很重要啊,最好在定义变量时候都初始化,赋值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
定义一个字符串指针S
指针S的数据类型长度
S所指字符串长度
指针S的数据类型长度
S所指字符串长度
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询