请教下是说只能char[]数组类型或char指针类型,可以使用strlen函数求其长度?

如果是int型,例如:
int len[3];
len[0] = 1;
len[1] = 2;
printf("%s\n", strlen(len));
打印是0?
谢谢!

忽然笑
浏览 126回答 2
2回答

海绵宝宝撒

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 (字符数组名)功能:计算字符串s的(unsigned int型)长度,不包括'\0'在内说明:返回s的长度,不包括结束符NULL。相关函数:TCHAR.H routine _UNICODE & _MBCS not defined_MBCS defined_UNICODE defined_tcslen程序举例举例1:(在Visual C++6.0中运行通过)#include <string.h>#include<stdio.h>int main(void){char *s="Golden Global View";printf("%s has %d chars",s,strlen(s));getchar();return 0;}

蝴蝶不菲

1.xx[2][8]的内存是连续分配的2.012345670dAe,BfC.1CCbbAA\0本来在第一行最后应该是\0的,但是位置占满了,所以\0就到第二行了(由于内存的连续分配)但是继续向第二行写数据的时候,C就把第一行的\0覆盖了,到最后再加上第二的\0而strlen只认起始字符d然后开始数,直到\0为止所以把dAe,BfC.CCbbAA都数上了,数到第二行的\0结束,所以是14个
打开App,查看更多内容
随时随地看视频慕课网APP