barriers / 阅读 / 详情

C语言中sizeof与strlen的区别是什么

2023-08-03 19:31:22
共3条回复
蓓蓓

strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个"",如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到""停止。

  char aa[10];cout<<strlen(aa)<<endl; //结果是不定的

  char aa[10]={""}; cout<<strlen(aa)<<endl; //结果为0

  char aa[10]="jun"; cout<<strlen(aa)<<endl; //结果为3

  而sizeof()函数返回的是变量声明后所占的内存数,不是实际长度。

  sizeof(aa) 返回10

  int a[10]; sizeof(a) 返回40

  1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。

  该类型保证能容纳实现所建立的最大对象的字节大小。

  2.sizeof是算符,strlen是函数。

  3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以""""结尾的。

  sizeof还可以用函数做参数,比如:

  short f();

  printf("%d ", sizeof(f()));

  输出的结果是sizeof(short),即2。

  4.数组做sizeof的参数不退化,传递给strlen就退化为指针了。

  5.大部分编译程序 在编译的时候就把sizeof计算过了是类型或是变量的长度这就是sizeof(x)可以用来定义数组维数的原因

  char str[20]="0123456789";

  int a=strlen(str); //a=10;

  int b=sizeof(str); //而b=20;

  6.strlen的结果要在运行的时候才能计算出来,是用来计算字符串的长度,不是类型占内存的大小。

  7.sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数。

  8.当适用于一个结构类型时或变量, sizeof 返回实际的大小,当适用于静态的空间数组, sizeof 归还全部数组的尺寸。

  sizeof 操作符不能返回被动态分派的数组或外部数组的尺寸

  9.数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址,

  如:

  fun(char [8])

  fun(char [])

  都等价于 fun(char *)

  在C++里参数传递数组永远都是传递指向数组首元素的指针,编译器不知道数组的大小

  如果想在函数内知道数组的大小, 需要这样做:

  进入函数后用memcpy拷贝出来,长度由另一个形参传进去

  fun(unsiged char *p1, int len)

  {

  unsigned char* buf = new unsigned char[len+1]

  memcpy(buf, p1, len);

  }

  我们经常使用 sizeof 和 strlen 的场合,通常是计算字符串数组的长度

  看了上面的详细解释,发现两者的使用还是有区别的,从这个例子可以看得很清楚:

  char str[20]="0123456789";

  int a=strlen(str); //a=10; >>>> strlen 计算字符串的长度,以结束符 0x00 为字符串结束。

  int b=sizeof(str); //而b=20; >>>> sizeof 计算的则是分配的数组 str[20] 所占的内存空间的大小,不受里面存储的内容改变。

  上面是对静态数组处理的结果,如果是对指针,结果就不一样了

  char* ss = "0123456789";

  sizeof(ss) 结果 4 ===》ss是指向字符串常量的字符指针,sizeof 获得的是一个指针的之所占的空间,应该是

  长整型的,所以是4

  sizeof(*ss) 结果 1 ===》*ss是第一个字符 其实就是获得了字符串的第一位"0" 所占的内存空间,是char类

  型的,占了 1 位

  strlen(ss)= 10 >>>> 如果要获得这个字符串的长度,则一定要使用 strlen

  sizeof返回对象所占用的字节大小. //正确

  strlen返回字符个数. //正确

  在使用sizeof时,有一个很特别的情况,就是数组名到指针蜕变,

  char Array[3] = {"0"};

  sizeof(Array) == 3;

  char *p = Array;

  strlen(p) == 1;//sizeof(p)结果为4

  在传递一个数组名到一个函数中时,它会完全退化为一个指针

  ----------------------------------------------------------

  看完以上你是否很清楚sizeof和strlen的区别了呢?还不明白的话,我们看下面几个例子:

  第一个例子

  char* ss = "0123456789";

  sizeof(ss) 结果 4 ===》ss是指向字符串常量的字符指针

  sizeof(*ss) 结果 1 ===》*ss是第一个字符

  大部分编译程序 在编译的时候就把sizeof计算过了 是类型或是变量的长度

  这就是sizeof(x)可以用来定义数组维数的原因

  char str[20]="0123456789";

  int a=strlen(str); //a=10;

  int b=sizeof(str); //而b=20;

  大部分编译程序 在编译的时候就把sizeof计算过了 是类型或是变量的长度

  这就是sizeof(x)可以用来定义数组维数的原因

  char str[20]="0123456789";

  int a=strlen(str); //a=10;

  int b=sizeof(str); //而b=20;

  char ss[] = "0123456789";

  sizeof(ss) 结果 11 ===》ss是数组,计算到位置,因此是10+1

  sizeof(*ss) 结果 1 ===》*ss是第一个字符

  char ss[100] = "0123456789";

  sizeof(ss) 结果是100 ===》ss表示在内存中的大小 100×1

  strlen(ss) 结果是10 ===》strlen是个函数内部实现是用一个循环计算到为止之前

  int ss[100] = "0123456789";

  sizeof(ss) 结果 400 ===》ss表示在内存中的大小 100×4

  strlen(ss) 错误 ===》strlen的参数只能是char* 且必须是以""结尾的

  char q[]="abc";

  char p[]="a ";

  sizeof(q),sizeof(p),strlen(q),strlen(p);

  结果是 4 3 3 2

  第三个例子

  char szPath[MAX_PATH]

  如果在函数内这样定义,那么sizeof(szPath)将会是MAX_PATH,但是将szPath作为虚参声明时(void fun(char szPath[MAX_PATH])),sizeof(szPath)却会是4(指针大小)

  子

  char szPath[MAX_PATH]

  如果在函数内这样定义,那么sizeof(szPath)将会是MAX_PATH,但是将szPath作为虚参声明时(void fun(char szPath[MAX_PATH])),sizeof(szPath)却会是4(指针大小)

  还有一位网友的说明也很好:

  其实理解 sizeof 只需要抓住一个要点:栈

  程序存储分布有三个区域:栈、静态和动态。能够从代码直接操作的对象,包括任何类型的变量、指针,都是在栈上的;动态和静态存储区是靠栈上的所有指针间接操作的。 sizeof 操作符,计算的是对象在栈上的投影体积;记住这个就很多东西都很清楚了。

  char const * static_string = "Hello";

  sizeof(static_string) 是 sizeof 一个指针,所以在 32bit system 是 4

  char stack_string[] = "Hello";

  sizeof(stack_string) 是 sizeof 一个数组,所以是 6 * sizeof(char)

  char * string = new char[6];

  strncpy(string, "Hello", 6");

  sizeof(string) 是 sizeof 一个指针,所以还是 4。和第一个不同的是,这个指针指向了动态存储区而不是静态存储区。

  不管指针指向的内容在什么地方,sizeof 得到的都是指针的栈大小

  C++ 中对引用的处理比较特殊;sizeof 一个引用得到的结果是 sizeof 一个被引用的对象的大小;所以

  struct O

  {

  int a, b, c, d, e, f, g, h;

  };

  int main()

  {

  O & r = *new O;

  cout << sizeof(O) << endl; // 32

  cout << sizeof r << endl; // 也是 32

  system("PAUSE");

  }

  r 引用的是整个的 O 对象而不是指向 O 的指针,所以 sizeof r 的结果和 sizeof O 完全相同。

小菜G

sizeof获得是所占的字节数,所分配的空间的字节数。

strlen获得是长度(实际字符的个数)。

例如: char a[5]="abc";

sizeof(a) 等于5,因为分配了5个字节的空间。

而strlen(a)等于3,这是其实际字符的个数

北有云溪

sizeof 是被测试类型占用字节的大小

strlen是以为结束符的字符串的串长度(不含结束符)

比如吧:

char *p = "0123456789abcdef";

char str[] = "0123456789abcdef";

char str2[100] = "0123456789abcdef";

sizeof(p) 只是 4(或8与操作系统有关,32位系统应当只是4)

strlen(p) 是16个长度

sizeof(str) 是17

strlen(str) 是16

sizeof(str2) 是100

strlen(str2) 是16

相关推荐

在C语言中Strlen是什么意思?

int strlen(char *)返回实参字符串的长度,不包括"".
2023-08-03 15:09:387

c语言中strlen是什么意思

标准函数 求字符串长度
2023-08-03 15:10:075

strlen()函数是什么意思?

strlen(char *)作用:检测字符串实际长度。如:char s[]="1234567"; int a=strlen(s);//a=7 实际上strlen(char *)检测的是"",strlen(char *)碰到""就返回""以前的字符数。又如: char f[]="1234561111"; int b=strlen(f);//b=6,因为遇到了""
2023-08-03 15:10:286

C语言中strlen(s)是什么意思?S是一个数组!

求这个字符数字的长度,是标准库函数,可以去查一下C标准库给出的函数接口
2023-08-03 15:10:597

C语言中strlen函数是怎么计数的?

从开始数,直到遇到字符"",""之前有几个字符,就返回几
2023-08-03 15:11:213

c语言strlen函数问题

用sizeof
2023-08-03 15:11:2912

c语言strlen函数问题

输出结果为"\141141abc "这个字符串的长度13,每个符号( 是一个)、字母、数字占一个字符。、chars[]="\141141abc "相当于char[13]="\141141abc ",即用字符串初始化了该数组。
2023-08-03 15:12:133

c语言求数组长度strlen

strlen 用于计算字符串的长度。数组长度,应是指数组大小,可存放几个数组元素。下面例子 计算 float 数组a, char 数组s 的 数组长度,计算s 里字符串长度。(sizeof 用来计算 变量 和 类型 占内存的大小,单位是字节。)#include <stdio.h>int main(){float a[5];char s[20]="abc123";int nf,ns,ms;nf = sizeof(a)/sizeof(float);ns = sizeof(s)/sizeof(char);ms = strlen(s);printf("number of element in a is %d ", nf);printf("number of element in s is %d ", ns);printf("s string length is %d ",ms); return 0;}输出:number of element in a is 5number of element in s is 20s string length is 6
2023-08-03 15:12:201

C语言实现strlen函数的几种方法

strlen函数的原理你都搞错了,其原型应该是这样的:intstrlen(char*);它接受的是一个char*类型的参数,真不晓得你的这个是怎么传递进去的。strlen计算字符串的长度例如"abc"的长度是3.但是实际上如果将其放到字符数组中的话,应该占4个元素。因为字符串是以字符""结尾的,但是这个""在我们的字符串是隐藏的,我们看不到。实际上是有的.例如:chara[4]="abc";//这里数组的元素个数至少应该是4,否则此字符串不叫字符串了,只能叫字符数组了。strlen判断一个字符串的结束就是以其末尾的""为界限。其实现代码可以模拟为以下:intstrlen(char*p){inti=0;while(*p++)i++;returni;}而你的数组没有正常的终止条件,所以strlen出问题了,#include#includevoidmain(){charx[3]={0};x[0]="a";x[1]="b";x[2]="c";intlen=strlen(x);printf("%c%d ",x[6],len);}把代码改成这样,就可以看出在执行strlen的时候,x的内容变了,具体原理参考源代码你在用右键查看定义就可以找到了,在vc98includestring.h文件里有size_t__cdeclstrlen(constchar*);你要注意一下,strlen是标准c库函数,不是c++的库函数,你可以在strlen前面发现有,extern"c"{这表明括号里面的是c语言写的函数你的程序里char占
2023-08-03 15:12:281

strlen函数计算字符串长度

strlen遇到就结束,不继续往下计算长度了1.答案1是因为第2个字符为,所以只计算了一个字符"A"2.答案3是因为 、v、\前面的是表示转义符3.答案1是因为x69表示是16进制的数值
2023-08-03 15:12:374

关于strlen

1.strlen()是用来求字符串的长度的,字符串是用""表示结束,strlen就是是检测到第一个""结束你可以体会下字符串和字符数组的区别改成下面这样就对了#include<stdio.h>main(){char*a=
2023-08-03 15:12:575

函数strlen("1234abc")的返回值是______.

strlen遇到第一个时返回,计数时不包含所以返回值是4,即"1","2","3","4",共4个字符!
2023-08-03 15:13:112

strlen("ABC")结果为什么是1

int strlen(const char* str){ const char *p = str; while(*p != "") ++p; return p - str;}或者int strlen(const char *str){ int i = 0; while(str[i] != "") ++i; return i;}
2023-08-03 15:13:254

请问C语言中strlen("ass ")是多少?

是4没错。分析如下:printf(" %d",strlen("abc "));反斜杠加上某字符是转义成某字符的意思,1就是1,]就是]。因此反斜杠加上某个字符的长度就是1个字节。长度会加1。除了一个特殊的字符之外 如下:printf(" %d",strlen("abc"));结果是3因为显式地给出了字符串的结束符,而我们知道strlen函数返回的长度是字符串的长度,不包括结束符。因此结果就是3再比如printf(" %d",strlen("abc\"));结果为4 printf(" %d",strlen("abc"));编译报错。因为反斜杠一定要跟上一个字符,哪怕跟的是空格。printf(" %d",strlen("abc"));注意反斜杠后有一个空格,此时转义的是空格,所以长度为4。
2023-08-03 15:13:331

strlen包括换行符吗str="ab 123\"" strlen(str)是多少

您好,很高兴回答您的问题!回答:1,strlen包括换行符,不包括结束符“”,strlen(str)的大小为7,分别为:a ,b, ,123,,,*共7个字符;2,如果您用sizeof的话会比strlen()多1个(加上最后的""),也就是8.
2023-08-03 15:13:401

调用字符函数strlen("abcdefggh")的返回值是----- A:4 B:5 C:9 D:13

A
2023-08-03 15:13:485

在C语言中,strlen(“TOP╲t╲0”)的值是

如果是英文半角的话, 值为5如果题目上就是全角的反斜杠, 那就是9
2023-08-03 15:14:142

C语言中strlen(s)是什么意思?S是一个数组!

strlen是C语言标准库提供的一个函数,给你提供strlen的一个版本,你就明白其中的s是什么意思了。size_tstrlen(constchar*s){constchar*sc;for(sc=s;*sc!="";++sc);return(sc-s);}
2023-08-03 15:14:211

C语言 strlen 函数求字节数 例如输入“how are you” 包括空格吗 矛盾!!

当然包含空格了,直到遇见""结束
2023-08-03 15:14:293

strlen遇到汉字会怎样处理?

strlen 在处理汉字串时,与处理一般的英文串是一样的,就是计算从串首地址开始检查到""字符的位置,然后计算两个地址的差,返回差值,也就是字符串中有多个字符(字节)""字符不是汉字的组成部分!对于一个汉字占几个字节,不同的字符集是不同的,如果环境变量设置为utf8,则一个汉字占三个字节如果设置成gbk类,则一个汉字占两个字节
2023-08-03 15:14:481

strlen和sizeof求字符串长度的区别

strlen是返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。sizeof是获得保证能容纳实现所建立的最大对象的字节大小。 strlen和sizeof求字符串长度的区别 一、定义不同 sizeof是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 2、它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:数组——编译时分配的数组空间大小;指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4)。 二、语法不同 1、strlen是函数,要在运行时才能计算。参数必须是字符型指针。当数组名作为参数传入时,实际上数组就退化成指针了。 2、它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。
2023-08-03 15:14:551

strlen是不是遇到空格就停止了?

不会停止,而且一个空格算一个字符
2023-08-03 15:15:032

求解一个c语言选择题 不是说strlen遇到/0就停止了吗?

是这样的。C语言中的字符串实际上是字符数组,即char类型的数组。不过特殊约定以作为结束符。strlen是C语言中字符串函数之一,功能为求字符串的长度。即字符串中有效字符的个数,不包括结尾的.要调用strlen,需要引用头文件string.h。比如strlen("1234");的返回值为4,在内存中实际存的值为"1","2","3","4",""。需要注意的是,sizeof和strlen的结果,在大多数情况下都是不同的。
2023-08-03 15:15:351

strlen如何求二维数组某一行的长度

我想你其实不是问这个问题,LZ想问的是?
2023-08-03 15:15:504

c++中的strlen怎么调用?

因为C++里没有string.h这个头文件,今天才听老师讲了。你用的是旧式的#include<iostream.h>#include<string.h>如果用下面的新式的就行#include<iostream>#include<string>using namespace std;因为using namespace std可以把C的string.h也包含进去,这就是新旧的差别!
2023-08-03 15:16:143

请教大家一个strlen函数的问题

出这道题目的人水平太差了,多办是半路出家的,非常不专业,你的分析是有道理的。可能出题人只用过TURBO C,因为只有TURBO C这样的小程序才喜欢画蛇添足,自动添加结束符,所以长度会都是3。TURBO C自动添加结束符的做法是不规范的,C语言定义并没有这样规定编译器的行为,我们写程序切记千万别依赖这些不规范行为,否则在你写手机程序、UNIX程序的时候,会感到无数的莫名其妙,许多时候永远都想不明白程序原因。你的分析完全正确,在UNIX、LINUX、FREE BSD等正规的C语言里面,都是不添加结束符的,下面是我在SCO UNIX下运行程序的情况:$ cat a.cmain(){ char p[]={"a", "b", "c"}, q[10]={"a", "b", "c"};printf("%d %d ", strlen(p), strlen(q));}$ cc a.c$ a.out9 3为什么输出结果是9和3呢,因为UNIX装载要初始化内存为0,所以第二个长度是3,而且前面个的9可以让我们知道p和q两个变量之间有多少内存浪费来对齐:)eGmeN4gFop22wPSBOiOI
2023-08-03 15:16:251

函数strlen("ABCD \123")的值是多少

返回7解析:ABCD \123分看单个字符ABCD // 这个是tab\ // 这个是123 // 这个是字符的8进制表示形式
2023-08-03 15:16:461

strlen 函数的源代码

int fun(char s1[]){int i,ans;for(i=0;s1[i]!="";i++)ans=i+1;return ans;}
2023-08-03 15:17:172

C语言中sizeof和strlen函数区别在哪?

一、sizeofsizeof(...)是运算符,在头文件中typedef为unsignedint,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所占的空间,返回值跟对象、结构、数组所存储的内容没有关系。具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:数组——编译时分配的数组空间大小;指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4);类型——该类型所占的空间大小;对象——对象的实际占用空间大小;函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。二、strlenstrlen(...)是函数,要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化成指针了。它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL;1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsignedint类型。该类型保证能容纳实现所建立的最大对象的字节大小。2.sizeof是算符,strlen是函数。3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以""""结尾的。sizeof还可以用函数做参数,比如:shortf();printf("%d ",sizeof(f()));输出的结果是sizeof(short),即2。4.数组做sizeof的参数不退化,传递给strlen就退化为指针了。5.大部分编译程序在编译的时候就把sizeof计算过了是类型或是变量的长度这就是sizeof(x)可以用来定义数组维数的原因charstr[20]="0123456789";inta=strlen(str);//a=10;intb=sizeof(str);//而b=20;6.strlen的结果要在运行的时候才能计算出来,时用来计算字符串的长度,不是类型占内存的大小。7.sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数。8.当适用了于一个结构类型时或变量,sizeof返回实际的大小,当适用一静态地空间数组,sizeof归还全部数组的尺寸。sizeof操作符不能返回动态地被分派了的数组或外部的数组的尺寸9.数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址,如:fun(char[8])fun(char[])都等价于fun(char*)在C++里参数传递数组永远都是传递指向数组首元素的指针,编译器不知道数组的大小如果想在函数内知道数组的大小,需要这样做:进入函数后用memcpy拷贝出来,长度由另一个形参传进去fun(unsigedchar*p1,intlen){unsignedchar*buf=newunsignedchar[len+1]memcpy(buf,p1,len);}
2023-08-03 15:17:301

直接调用字符串函数strlen( ),求字符串长度

strlen的结果要在运行的时候才能计算出来,主要用来计算字符串的长度,不是类型占内存的大小,strlen只能用char*做参数,且必须是以""""结尾的。1、第二个元素就是所以得到字符串长度为12、 v\都是转义字符,为三个字符,后面又是,所以长度为33、x69就是16进制的69,十进制为105,查看ascii表对应字符,而xxx指的是一个八进制值所对应字符,但是82显示不是,八进制只有0-7的数字,所以这里只是一个和数字82字符串长度为1如果要获得每个数组中有多少个字符可以考虑用sizeof
2023-08-03 15:17:381

C语言中的strlen函数

strlen是求字符串长度的函数。函数原型:unsigned int strlen(char *s);参数:s是char类型的指针,指向要求长度的字符串返回值:返回字符串的长度,返回类型是无符号整型注意:strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符""为止,然后返回计数器值(长度不包含“”)。实例:#include<string.h>#include<stdio.h>int main(void){ char*s="GoldenGlobalView"; printf("%s has %d chars",s,strlen(s)); getchar(); return 0;}
2023-08-03 15:17:465

strlen("ats 0121\")

C 程序段得意思是打印字符串的长度 其中ATS是字母 长度各为1 是转义字符 表示换行 012是数字,长度各为1 1也是个转义字符 \是转义字符 所以加一起是9
2023-08-03 15:18:001

关于strlen的算法

第一个97,先判断它不是八进制的,所以遇到就停止了第二个78是一个八进制的
2023-08-03 15:18:095

请问 C++中strlen()用法

数组str0中没有"",strlen是以""为标志判断字符串结束的。
2023-08-03 15:18:233

C语言中sizeof和strlen函数区别在哪?

一、sizeofsizeof(...)是运算符,在头文件中typedef为unsignedint,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所占的空间,返回值跟对象、结构、数组所存储的内容没有关系。具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:数组——编译时分配的数组空间大小;指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4);类型——该类型所占的空间大小;对象——对象的实际占用空间大小;函数——函数的返回类型所占的空间大小。函数的返回类型不能是void。二、strlenstrlen(...)是函数,要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化成指针了。它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL;1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsignedint类型。该类型保证能容纳实现所建立的最大对象的字节大小。2.sizeof是算符,strlen是函数。3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以""""结尾的。sizeof还可以用函数做参数,比如:shortf();printf("%d ",sizeof(f()));输出的结果是sizeof(short),即2。4.数组做sizeof的参数不退化,传递给strlen就退化为指针了。5.大部分编译程序在编译的时候就把sizeof计算过了是类型或是变量的长度这就是sizeof(x)可以用来定义数组维数的原因charstr[20]="0123456789";inta=strlen(str);//a=10;intb=sizeof(str);//而b=20;6.strlen的结果要在运行的时候才能计算出来,时用来计算字符串的长度,不是类型占内存的大小。7.sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数。8.当适用了于一个结构类型时或变量,sizeof返回实际的大小,当适用一静态地空间数组,sizeof归还全部数组的尺寸。sizeof操作符不能返回动态地被分派了的数组或外部的数组的尺寸9.数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址,如:fun(char[8])fun(char[])都等价于fun(char*)在C++里参数传递数组永远都是传递指向数组首元素的指针,编译器不知道数组的大小如果想在函数内知道数组的大小,需要这样做:进入函数后用memcpy拷贝出来,长度由另一个形参传进去fun(unsigedchar*p1,intlen){unsignedchar*buf=newunsignedchar[len+1]memcpy(buf,p1,len);}
2023-08-03 15:18:311

请问 C++中strlen()用法

str0的sizeof为8,导致没有结束,因此strlen的返回是不可预期的。str1的sizeof实际上是9,会自动加结束。str2的56会被解释成8进制数056表示的字符,因此strlen是9str3的会被解释为结束符
2023-08-03 15:18:395

c语言里面的strlen是干什么的

计算字符串长度。
2023-08-03 15:18:543

c语言中strlen()怎么用

__cdecl strlen(const char *);计算字符串的实际长度(不含字符串结束标志‘"),并将计算结果作为函数值返回。
2023-08-03 15:19:1412

C语言中strlen什么用法

这个函数是用来计算字符数组的长度的。下面有个相似的问题,你可以看看。
2023-08-03 15:19:388

C语言中strlen()函数的意思?

strlen()返回参数字符串的长度
2023-08-03 15:19:542

strlen求字符串长度

strlen的结果要在运行的时候才能计算出来,主要用来计算字符串的长度,不是类型占内存的大小,strlen只能用char*做参数,且必须是以""""结尾的。1、第二个元素就是 所以得到字符串长度为12、 v \都是转义字符,为三个字符,后面又是,所以长度为33、x69就是16进制的69,十进制为105,查看ASCII表对应字符,而xxx指的是一个八进制值所对应字符,但是82显示不是,八进制只有0-7的数字,所以这里只是一个 和数字 82 字符串长度为1如果要获得每个数组中有多少个字符可以考虑用sizeof求采纳为满意回答。
2023-08-03 15:20:041

用strlen()时,头文件要用什么?

#include<string.h>其实你只要在Turbo C中键入strlen后将光标定位在这个单词上,右键,就会有关于这个函数的详细说明.
2023-08-03 15:20:111

c语言,函数strlen("ASDFG ")的值是7,对吗?怎么看的?

不对的,这个值是6.1 strlen求的是字符串的长度,也就是从起始到的字符个数,不包括.2 对于写成常量字符串形式的"ASDFG "在最后有一个隐藏的.3 在这里 是C语言字符表达的转义字符形式,代表换行。也就是说, 是一个字符,而不是和n两个字符。4 综上,这个字符串包含的字符为A S D F G 一共6个,于是strlen的结果就是6.
2023-08-03 15:21:041

strlen("China ")的值是多少?

strlen是计算字符串长度,不包括字符串结束符,该问题主要是" "的问题," "不是字符串结束符,那么就会在计算内,且" "为转义字符,为单个字符,所以strlen("China ")结束为6。strlen是求字符串长度的函数。函数原型:unsigned int strlen(char *s);参数:s是char类型的指针,指向要求长度的字符串返回值:返回字符串的长度,返回类型是无符号整型注意:strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符""为止,然后返回计数器值(长度不包含“”)。实例:#include#includeint main(void){char*s="GoldenGlobalView";printf("%s has %d chars",s,strlen(s));getchar();return 0;}
2023-08-03 15:21:121

strlen算不算

strlen指的是字符串的长度,不包含/t。 strlen是C语言中的库函数,计算字符串长度,不包括尾0。 strlen所作的是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符""为止,然后返回计数器值(长度不包含"")。
2023-08-03 15:21:311

strlen函数计算字符串长度

strlen遇到就结束,不继续往下计算长度了1.答案1是因为第2个字符为,所以只计算了一个字符"A"2.答案3是因为 、v、\前面的是表示转义符3.答案1是因为x69表示是16进制的数值
2023-08-03 15:21:545

C++中getlen()、strlen()、sizeof()三个函数的区别是什么?

getlen这个函数我没见过哦....msdn里面也没有 strlen 这个函数呢,是返回一个字符串中的字符个数,,不包括结束符 "" #include <string.h> #include <stdio.h> #include <conio.h> #include <dos.h> void main( void ) { char buffer[61] = "How long am I?"; int len; len = strlen( buffer ); printf( ""%s" is %d characters long ", buffer, len ); } Output "How long am I?" is 14 characters long sizeof..首先我要说的是,这个不是一个函数,是一个运算符.相当于 + - * ....它是系统的一个关键字..跟return int char是一类的..它能够得到一个变量的大小..(按字节计算)... int array[] = { 1, 2, 3, 4, 5 }; // sizeof( array ) is 20 因为array中含有5个int型..一个是4字节..
2023-08-03 15:22:262

strlen("China ")的值是多少?

strlen是计算字符串长度,不包括字符串结束符,该问题主要是" "的问题," "不是字符串结束符,那么就会在计算内,且" "为转义字符,为单个字符,所以strlen("China ")结束为6。strlen是求字符串长度的函数。函数原型:unsigned int strlen(char *s);参数:s是char类型的指针,指向要求长度的字符串返回值:返回字符串的长度,返回类型是无符号整型注意:strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符""为止,然后返回计数器值(长度不包含“”)。实例:#include#includeint main(void){char*s="GoldenGlobalView";printf("%s has %d chars",s,strlen(s));getchar();return 0;}
2023-08-03 15:22:341

strlen函数

1.strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符""为止,然后返回计数器值(长度不包含“”)。2.头文件:string.h格式:strlen(字符数组名)。功能:计算给定字符串的(unsignedint型)长度,不包括""在内。说明:返回s的长度,不包括结束符NULL。相关函数:TCHAR.Hroutine_UNICODE&_MBCSnotdefined_MBCSdefined_UNICODEdefined_tcslen3.应用:#include<string.h>#include<stdio.h>int main(void){ char*s="GoldenGlobalView"; printf("%s has %d chars",s,strlen(s)); getchar(); return 0;}
2023-08-03 15:22:448

函数strlen("abcde ")的值是?

6撒,lz不会自己编个程序试试……
2023-08-03 15:23:005