关闭

空闲时候思考2('\0'等价于数字0还是字符0)

706人阅读 评论(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


1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:110885次
    • 积分:2789
    • 等级:
    • 排名:第12871名
    • 原创:166篇
    • 转载:49篇
    • 译文:0篇
    • 评论:13条
    最新评论