首页 > 代码库 > 空暇时候思考2('\0'等价于数字0还是字符0)
空暇时候思考2('\0'等价于数字0还是字符0)
/********************************************************************** * * Copyright (c)2015,WK Studios * * Filename: A.h * * Compiler: GCC vc 6.0 * * Author:WK * * Time: 2015 6 7 * **********************************************************************/ #include<iostream> using namespace std; void main() { char a[100]={‘0‘,48,48,0,0,‘0‘}; char b[]={‘0‘,48,48,0,0,‘0‘}; char c[]={‘0‘,‘0‘}; char d[]={0}; //注意一下数字0与字符‘0‘差别 //‘\0‘等价于数字0而不是字符0 cout<<sizeof(a)<<endl; cout<<strlen(a)<<endl; cout<<sizeof(b)<<endl; cout<<strlen(b)<<endl; cout<<sizeof(c)<<endl; cout<<strlen(c)<<endl; cout<<sizeof(d)<<endl; cout<<strlen(d)<<endl;
执行结果:
100
3
6
3
2
7
1
0
不行的话再看一个:
#include <iostream> using namespace std; void example() { int i; char acNew[20]; for(i = 0; i < 5; i++) { acNew[i] = ‘0‘ ; } printf("%d\n",strlen(acNew)); return ; } void main() { example(); }结果是一个随机的值,由于strlen没有找到结束的表示符‘\0’
略微修改一下:
#include <iostream> using namespace std; void example() { int i; char acNew[20]; for(i = 0; i < 5; i++) { acNew[i] = 0 ; // ‘\1‘ 0 } printf("%d\n",strlen(acNew)); return ; } void main() { example(); }
这次结果是0
空暇时候思考2('\0'等价于数字0还是字符0)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。