首页 > 其他分享 >C语言-运算符 sizof与strlen的区别

C语言-运算符 sizof与strlen的区别

时间:2022-10-05 17:22:19浏览次数:78  
标签:sizof char 运算符 str 字符串 sizeof strlen 指针

1、sizeof是运算符,strlen是C语言标准库函数。
2、 strlen 测量的是字符串的实际长度,以’\0’ 结束,返回结果不包括’\0’ 。
3、而sizeof 测量的是字符的分配大小,它的参数可以是数组、指针、类型、对象、函数等。

 

具体而言,当参数分别如下时,sizeof返回的值含义如下:

数组-编译时分配的数组空间大小;

指针-存储该指针所用的空间大小;

类型-该类型所占的空间的大小;

对象-对象的实际占用空间大小;

函数-函数返回类型所占空间的大小;

例题

char *str1=“absde”;
char str2[]=“absde”;
char str3[8]={‘a’,};
int str4[8]={‘a’,};
char ss[] = “0123456789”;

输出:

sizeof(str1); // 4,计算的是指针内存的大小,包括’\0’
sizeof(str2); // 6 ,计算的是字符串的内存大小,包括’\0’
sizeof(str3); // 8 ,计算的是char型数组的内存大小
sizeof(str4); // 32 ,计算的是int型数组的内存大小
sizeof(ss); // 11 ,计算的是字符串的大小,包括’\0’
strlen(str1); // 5 ,计算的是字符串长度,不包括‘\0’
strlen(str2); // 5 ,计算的是字符串长度,不包括‘\0’
strlen(str3); // ? ,因为字符串需要找到’\0’才可结束,要在’a’之后找到’\0’,所以是个随机值
strlen(str4); // ? ,因为字符串需要找到’\0’才可结束,要在’a’之后找到’\0’,所以是个随机值
strlen(ss); // 10 ,计算的是字符串长度,不包括‘\0’

例题2:
what is the output of this code?
char s[20]=“Hello\0Hi”;
printf(“%d %d”,strlen(s),sizeof(s));

A 5 9
B 7 20
C 5 20
D 8 20

正确答案 C

例题3
char str[]=“hello”;
char *p=str;
int n=10;
//请计算
sizeof(str); //6,5+1=6,1代表’\0’
sizeof§; //4,代表指针
sizeof(n); //4,整形占据的存储空间

void func(char str[100])
{
sizeof(str); //4,此时str已经转换为指针了
}

void *p=malloc(100);

sizeof§;//4,指针大小

标签:sizof,char,运算符,str,字符串,sizeof,strlen,指针
From: https://www.cnblogs.com/030622zfy-/p/16755863.html

相关文章

  • 递增运算符的重载
    #include<iostream>usingnamespacestd;//重载递增运算符//自定义整形classMyIntrger{friendostream&operator<<(ostream&ocut,MyIntrgercout);public: MyIn......
  • 【笨方法学python】ex3 - 运算符
    代码如下:点击查看代码#-*-coding:utf-8--*-print"中文示例"#+plus加号#-minus减号#/slash÷#*asterisk×#%percent余数#<less-than小于#......
  • XX学Python·运算符的使用
    算数运算符加减乘除//取商%取余(取模)**幂次运算()小括号用来提高运算优先级float1=10.2int1=4int2=11#数值型数据(float,int,bool)间可以进行算数运算#......
  • Python 教程之控制流(7)Python中的链接比较运算符
    检查两个以上的条件在编程语言中很常见。假设我们要检查以下条件:a<b<c最常见的语法如下:ifa<band在Python中,有一种更好的方法可以使用比较运算符Chaining来编写它......
  • Python 教程之运算符(14)Python中==和is运算符的区别
    相等运算符(==)是Python中的比较运算符,用于比较两个操作数的值并检查值是否相等。而“ is”运算符是标识运算符,用于检查两个操作数是否引用同一个对象(存在于同一个内......
  • 重载运算符
    []字符串也能作下标: 尽量不要在代码中写裸常量,可用宏定义,若是整型可以采用枚举类型(枚举类型中的修饰词可以被取出来直接使用,即不通过定义一个变量来使用)。 重载......
  • 第十三篇: go运算符
    算术运算符运算符术语示例结果+加10+515-减10-55*乘10*550/除10/52%取模(取余)10%31++后自增,没有前自增a=0;a++......
  • 位运算符
    java中有7个位运算符(&、|、^、~、>>、<<、>>>)按位与&  按位或|  按位异或^  按位取反~按位与&  两位全为1,结果为1,否则为0按位或|   两位有一个为1,......
  • 条件运算符
    逗号运算符cerrbreakCS_DBLCLKSdwSuspendCountWAIT_OBJECT_0WindowProcessdureWNDCLASSEX_CrtDumpMemoryLeaks_CrtSetBreakAllocnothrownewplacementnewplai......
  • 位运算符
    异或性质0^a=aa^a=0用法判断某个数出现次数的奇偶或性质用法且性质用法非性质用法......