首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

字符数组的字节与长度的议论

2012-09-06 
字符数组的字节与长度的讨论一、.经常讨论的是字符数组的字节问题了1) char str[]{C,,,\0}cout

字符数组的字节与长度的讨论

一、.经常讨论的是字符数组的字节问题了

1)

 char str[]={'C','+','+','\0'};
cout<<sizeof(str)<<endl;

 char str1[]="C++";
cout<<sizeof(str1)<<endl;//4

//直接赋值的时候,隐藏了"\0"结束符号

2)

 char str[]={'C','+','+'};
cout<<sizeof(str)<<endl; //3 实际上有多少字符就是有多少个字节

 char str1[]="C++";
cout<<sizeof(str1)<<endl;//4

 

3)

 char str[]={'你','+','+','\0'};
 cout<<sizeof(str)<<endl; //4 【在此用'你',虽然汉字超过了两个字节了,但是还是把它看为一个字符,占一位】

 char str1[]="你++";
 cout<<sizeof(str1)<<endl;//5  【在此用'你',汉字代表两个字节】

 

二、字符数组的长度问题

strlen的结果要在运行的时候才能计算出来,时用来计算字符串的长度,不是类型占内存的大小【而sizeof相对的是占内存空间大小】

1)

char str[]={'C','+','+','\0'};
 cout<<strlen(str)<<endl; //3  数组默认是以"\0",所以实际上最后一个不算入字符长度

 char str1[]="C++";
 cout<<strlen(str)<<endl;//3

 

2)

 char str[]={'C','+','+'};
 cout<<strlen(str)<<endl;  //11 这个竟然是11,让我们看看其strlen函数的原型如下:

int strlen(const char *str)
{
ASSERT(str!=NULL);
int len=0;
while(*str++!='\0')
len++;

return len;
}

如果字符串没有结束标志的话,那么strlen函数输出的就是错误的值.

 

3)

char str[]={'你','+','+','\0'};
 cout<<strlen(str)<<endl;//3

 char str1[]="你++";
 cout<<strlen(str1)<<endl;//4

 

 

 

热点排行