您当前的位置:首页 > 精选知识 > 正文

sizeof和strlen的区别(C++中sizeof和strlen的区别是什么)

本文目录

  • C++中sizeof和strlen的区别是什么
  • c语言中strlen 与sizeof有什么区别
  • C语言中sizeof和strlen函数区别在哪
  • C语言中sizeof与strlen的区别是什么
  • c语言sizeof和strlen的区别是什么
  • sizeof()和strlen()的区别
  • c语言sizeof和strlen的区别
  • sizeof和strlen在c语言的区别是什么
  • sizeof与strlen的区别

C++中sizeof和strlen的区别是什么

  strlen:是C标准库中的字符串函数,用于统计字符的个数。

  sizeof:是c语言中的运算符,确切的说是一个编译时运算符,用于统计类型或者变量所占的内存字节数。示例,以32位系统为例。

char *str = “hello“;strlen(str); //它的值是5,因为hello这个字符串有5个字符sizeof(str); //它的值是4,因为char *是一个指针类型,它占4个字节。sizeof(“hello“); //它的值是5,是因为hello有5个字符,每一个字符占1个字节。int a = {0};sizeof(a); //它的值是8,因为a中有2个int型变量,每个int型占4个字节,所以8字节

c语言中strlen 与sizeof有什么区别

strlen是返回字符串的长度。而sizeof,却是用来取得变量或类型所占用的内存大小的。这个a数组的字符串长度为4(末尾的\0是不计入字符串长度的),但a是10个单位的char型,它占用的内存空间是10*sizeof(char),为10.sizeof返回的数量的单位是Byte.

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

1、操作

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

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

2、参数类型

sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以’’\0’’结尾的。 

3、类型

sizeof是操作符(关键字),strlen是函数。 

扩展资料

strlen函数原型:

size_t strlen(const char *string)

size_t 是无符号整数的别名,在vs2008编译器中可以查看其宏定义。

功能:

其功能是获取字符串的长度。 

返回值:

在MSDN文档中查看strlen函数的返回值,叙述如下。

Each of these functions returns the number of characters in string, excluding the terminal NULL. No return value is reserved to indicate an error.

每个函数都返回字符串中的字符数,不包括终端NULL。不保留返回值以指示错误。 

参数:

Null-terminated string

空终止字符串, 字符串标准库提供的头文件中包含操作以空字符结尾的字符串(null-terminated string)的函数。

参考资料:百度百科——strlen

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

一、指代不同

1、sizeof:用于获取字符串的长度,是处理字符串的重要工具。

2、strlen:所作的是一个计数器的工作。

二、规则不同

1、sizeof:可用于任何变量名、类型名或常量值,当用于变量名(不是数组名)或常量时,不需要用圆括号。

2、strlen:从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符’\0’为止,然后返回计数器值。

三、用法不同

1、sizeof:sizeof( type_name ); // sizeof( 类型 );编译时起作用,而不是运行时。

2、strlen:extern unsigned int strlen(char *s);返回s的长度,不包括结束符NULL。

参考资料来源:百度百科-sizeof()

参考资料来源:百度百科-strlen

c语言sizeof和strlen的区别是什么

一、指代不同

1、sizeof:用于获取字符串的长度,是处理字符串的重要工具。

2、strlen:所作的是一个计数器的工作。

二、规则不同

1、sizeof:可用于任何变量名、类型名或常量值,当用于变量名(不是数组名)或常量时,不需要用圆括号。

2、strlen:从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符’\0’为止,然后返回计数器值。

定义

sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。

MSDN上的解释为:The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type(including aggregate types). This keyword returns a value of type size_t。

sizeof()和strlen()的区别

sizeof是算符,求内存空间大小,与所存数据大小长度无关。strlen是函数,到数组时退化成指针。它求字符串长度,直到遇到\0为止,理论上是随机的,你release再试试看。

c语言sizeof和strlen的区别

区别如下:

1、指代上的区别

(1)sizeof:用来获取字符串长度的导引,是处理字符串的重要工具。

(2)strlen:做的是一个计数器。

2、用法上的区别

(1)sizeof:sizeof( type_name ); // sizeof(type); 在编译时有效,而不是在运行时有效。

(2)strlen:extern unsigned int strlen(char *s); 返回s的长度,不包含终止符NULL。

定义

sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。

MSDN上的解释为:The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type(including aggregate types). This keyword returns a value of type size_t。

sizeof和strlen在c语言的区别是什么

sizeof和strlen在c语言的区别如下:

1、类型不同:sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。

2、性质不同:sizeof是算符,strlen是函数。

3、参数不同:sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以’’\0’’结尾的。sizeof还可以用函数做参数。

4、退化情况不同:数组做sizeof的参数不退化,传递给strlen就退化为指针了。

sizeof与strlen的区别

1. strlen 是函数,sizeof 是运算符。

2. strlen 测量的是字符的实际长度,以’\0’ 结束。而sizeof 测量的是字符的分配大小。

比如:

char str = “hello“;

printf(“strlen: %d\n“, strlen(str));

printf(“sizeof: %d\n“, sizeof(str));

结果显示为:

strlen: 5

sizeof: 20

3.但是在子函数中,size of 会把从主函数中传进来的字符数组当作是指针来处理。指针的大小又是由机器来决定,而不是人为的来决定的。

#include 《stdio.h》

void size_of(char str)

printf(“sizeof:%d\n“, sizeof(str));

}

int main()

{

char str = “hello“;

size_of(str);

return 0;

}

结果显示为sizeof:4

4.我们知道字符数组的初始化一次性赋值,也可以逐个赋值。可以指定数组的大小,也可以不指定数组长度。

#include 《stdio.h》

#include 《string.h》

int main()

{

char str1 = “hello“;

char str2 = {’h’, ’e’, ’l’, ’l’, ’o’, ’\0’};

char str3 = {’h’, ’e’, ’l’, ’l’, ’o’};

printf(“str1:%s\n“,str1);

printf(“str2:%s\n“,str2);

printf(“str3:%s\n“,str3);

printf(“str1:%d\n“, strlen(str1));

printf(“str2:%d\n“, strlen(str2));

printf(“str3:%d\n“, strlen(str3));

return 0;

}

结果显示为:

str1:hello

str2:hello

str3:hellohello

str1:5

str2:5

str3:10

5.strlen的结果要在运行的时候才能计算出来,是用来计算字符串的长度,不是类型占内存的大小。而大部分编译程序在编译的时候就把sizeof计算过了是类型或是变量的长度。

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

扩展资料:

sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。

由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所占的空间,返回值跟对象、结构、数组所存储的内容没有关系。

strlen(...)是函数,要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化成指针了。

它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL。返回的长度大小不包括NULL。

参考资料:百度百科——sizeof


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: 电脑怎么看什么系统?电脑系统是什么

下一篇: commencement(commencement date是什么意思)



推荐阅读