C语言中数据长度分析
发布时间
阅读量:
阅读量
在《C语言深度剖析》一书中遇到了一个问题,在恰巧利用这个机会的时候弄清了数据类型长度的问题。以下是一段程序,请问它运行后会输出什么数值?
#include<stdio.h>
int main(){
char a[1000];
int i;
for(i = 0; i < 1000; i++){
a[i] = -1 - i;
}
printf("strlen(a) = %d\n",strlen(a));
return 0;
}
一开始遇到这个问题时感觉很困惑像是个谜题一样?通常会想到的就是1000了。然而实际上输出的结果却是255。
弄清此问题的关键在于理解以下两个核心问题:一是strlen函数的工作原理是什么?二是char型变量值域的具体范围是怎样的?
在处理第一个问题时,请注意以下几点:首先,在很多情况下区分sizeof和strlen并不是特别直观。特别重要的一点是,请记住:sizeof是一个关键字而非函数;而strlen则是一个函数。 当使用strlen来计算字符串长度时,请注意它会遇到字符串结束符‘\0’并终止程序运行,并且这个结束符本身不会被计入长度计算中。那么为什么在256个字符后程序会终止呢?
全部评论 (0)
还没有任何评论哟~
