strlen(a) 用strlen计算各类型数组长度的时候是怎么来计算的?
intmain(){chara[1000];inti;for(1=0;i<1000;i++){a[i]=-1-i;}printf("%d",strlen(a));retu...
int main()
{
char a[1000];
int i;
for(1=0;i<1000;i++)
{
a[i]= -1-i;
}
printf("%d",strlen(a));
return 0;
}
这道题的答案为什么等于255? 展开
{
char a[1000];
int i;
for(1=0;i<1000;i++)
{
a[i]= -1-i;
}
printf("%d",strlen(a));
return 0;
}
这道题的答案为什么等于255? 展开
3个回答
展开全部
C中strlen只是返回数组中字符串的个数,并不一定是数组的长度。
strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含“\0”)。
extern unsigned int strlen(char *s);
在Visual C++ 6.0中,原型为size_t strlen(const char *string); ,其中size_t实际上是unsigned int,在VC6.0中可以看到这样的代码:typedef unsigned int size_t; 。
头文件:string.h
格式:strlen (字符数组名)
功能:计算给定字符串的(unsigned int型)长度,不包括'\0'在内
说明:返回s的长度,不包括结束符NULL。
例子:
#include<string.h>
#include<stdio.h>
int main(void)
{
char*s="GoldenGlobalView";
printf("%s has %d chars",s,strlen(s));
getchar();
return 0;
}
展开全部
C中strlen只是返回数组中字符串的个数,并不一定是数组的长度。
strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含“\0”)。
strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含“\0”)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
strlen 返回字符数组中第一个'\0'(字符0)与数组首地址的偏移量
本题中a[0]到a[254]中的内容均不为0,而a[255]被赋值为-1-255=-256,隐式转换为char类型则为0
因为int型的-256为11111111,11111111,11111111,00000000(2进制)
隐式转换为char类型从而变成00000000(2进制)=0
所以strlen返回255-0=255
本题中a[0]到a[254]中的内容均不为0,而a[255]被赋值为-1-255=-256,隐式转换为char类型则为0
因为int型的-256为11111111,11111111,11111111,00000000(2进制)
隐式转换为char类型从而变成00000000(2进制)=0
所以strlen返回255-0=255
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询