#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呢?不是自动确定位数吗?
省略下标字符数组长度问题
答案:3 悬赏:50
解决时间 2021-04-28 10:27
- 提问者网友:斯文败类
- 2021-04-27 16:16
最佳答案
- 二级知识专家网友:啵啵桃汀
- 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;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息