中易网

省略下标字符数组长度问题

答案:3  悬赏:50  
解决时间 2021-04-28 10:27
  • 提问者网友:斯文败类
  • 2021-04-27 16:16
#include<iostream>
using namespace std;
void main()
{
char p[]={'a','b','c'},q[10]={'a','b','c'};
cout<<strlen(p)<<endl<<strlen(q)<<endl;
}
为什么strlen(p)输出7而不是3呢?不是自动确定位数吗?
最佳答案
  • 二级知识专家网友:啵啵桃汀
  • 2021-04-27 16:48

字符串以\0结尾,strlen(p)就是从p[0]开始到第一个\0的距离,而不是说p的大小

全部回答
  • 1楼网友:初心未变
  • 2021-04-27 20:01
strlen函数返回的是字符串的长度,而不是数组的大小。字符串是以'\0'结尾的,数组p中并没有包含'\0',所以strlen函数返回的是个不确定的值。要计算数组大小应该用sizeof(p),它返回数组所占的字节数。
  • 2楼网友:偏爱自由
  • 2021-04-27 18:26

没有输出7啊,你用的是什么编译器?

cout<<sizeof(p)<<endl<<sizeof(q)<<endl;

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息