编程小白C语言练习8

题目要求

有以下程序
main()
{ char a[7]="a0\0a0\0"; int i,j;
i=sizeof(a); j=strlen(a);
printf("%d %d\n",i,j);
}

程序运行后的输出结果是?

思路分析 

这个题考的是基础,难度不大,不过比较考验功底

strlen所作的是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。

到题目里来看,第一个'\0'之前只要'a','0',所以此时j应该等于2

在 C 语言中,sizeof() 是一个判断数据类型或者表达式长度的运算符。简单的说其作用就是返回一个对象或者类型所占的内存字节数。

到题目里面来看 sizeof(a),数组a占7个字节,此时i应该等于7

撸写代码 

#include<stdio.h>
#include<string.h>
int main()
{
	char a[7]="a0\0a0\0";
	int i,j;
	i=sizeof(a);
	j=strlen(a);
	printf("i=%d j=%d ",i,j);
	return 0;
 } 

验证结果


那么我们将数组a定义10个字节, 并且删除第一个'\0',此时i应该为10,j应该为4

和分析的结果一模一样的 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章