Advertisement

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)

还没有任何评论哟~