首页 > 其他分享 >sizeof和strlen的区别及数组名的2个例外

sizeof和strlen的区别及数组名的2个例外

时间:2023-08-29 21:33:13浏览次数:39  
标签:字节 数组名 地址 数组 sizeof strlen

sizeof是一个操作符,是用来计算变量所占内存空间的大小,不关注内存中存放的具体内容,单位是字节。

strlen是一个库函数,专门求字符串长度的,只能针对字符串,从参数给定的地址向后一直找’\0‘,统计’\0‘之前出现的字符个数。

数组名确实是可表示首元素地址,但有2个例外:

1.sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组大小,单位是字节

2.&数组名,这里数组名是表示这个数组,取出的是整个数组的地址

标签:字节,数组名,地址,数组,sizeof,strlen
From: https://blog.51cto.com/u_16190077/7280397

相关文章

  • 笔记整理--C语言--sizeof()用法汇总——转载
    sizeof()功能:计算数据空间的字节数与strlen()比较strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。指针与静态数组的sizeof操作指针均可看为变量类型的一种。所有指针变量......
  • 关于 array 和 &array (数组名与数组地址)
     对于数组a:在绝大多数情况下,a等价于&a[0],即数组名等于数组首元素地址(等同于数组首地址)只有两种情况例外:1. 对数组名取地址(&a),此时虽然数值上等于a,但表示含义不同,a表示首元素地址,&a表示整个数组的首地址,    因此a+1≠&a+1,具体见前篇;2. 使用sizeof时,sizeof......
  • 11.数组名和指针(这⾥为指向数组⾸元素的指针)区别
    1intmain()2{3inta[2]={1,2};4int*p=a;5cout<<"a+1"<<a+1<<endl;6cout<<"p+1"<<p+1<<endl;7cout<<"*(a+1)"<<*(a+1......
  • strlen/strcpy/strcat的模拟实现
    char*my_strcat(char*dest,constchar*src){ assert(dest!=NULL);//字符串要以‘\0’结束,目标空间要足够大,且可修改 assert(src!=NULL); char*ret=dest; //1,找到目的字符串的\0; while(*dest!='\0') { dest++; } //2,追加 while(*dest++=*src++) { ; } returnr......
  • sizeof解析式分析
    sizeof类型:sizeof()是表达式不是函数用处:可以用来求变量、数组、对象、结构体等所占空间的大小,其实只要将sizeof()操作的参数理解成类型混淆点:sizeof()和数组        只有两种情况下数组名可以表示整个数组:(1)sizeof(数组名):此处数组名不能修饰,否则表示数组首元......
  • 104.字符串函数:strlen函数,strcpy函数,strcat函数,strcmp函数
    104.字符串函数:strlen函数,strcpy函数,strcat函数,strcmp函数1.字符串函数strlen(1)strlen函数strlen函数返回的是在字符串中’\0’前面出现的字符的个数(2)strlen的使用a.代码#include<stdio.h>#include<string.h>intmain(){ charstr1[]="abcdef"; printf("%d\n",s......
  • 26.数组名和指针(这里为指向数组首元素的指针)区别?
    二者均可通过增减偏移量来访问数组中的元素。数组名不是真正意义上的指针,可以理解为常指针,所以数组名没有自增、自减等操作。当数组名当做形参传递给调用函数后,就失去了原有特性,退化成一般指针,多了自增、自减操作,但sizeof运算符不能再得到原数组的大小了。......
  • C++面试八股文:了解sizeof操作符吗?
    C++面试八股文:了解sizeof操作符吗?某日二师兄参加XXX科技公司的C++工程师开发岗位第10面:面试官:了解sizeof操作符吗?二师兄:略微了解(不就是求大小的嘛。。)面试官:请讲以下如何使用sizeof?二师兄:sizeof主要是求变量或者类型的大小。直接使用sizeof(type)或sizeof(var)`即可。......
  • C++类中static不计算入sizeof
    classMyParam{public:inta;staticintb;intc;staticinty;staticintz;};sizeof(MyParam)=8intMyParam::b=10;intMyParam::z=10;intmain(){MyParamp;MyParamdest;p.a=10;p.b=2;p.c=4;memcpy(&am......
  • 面试题:C语言中 printf("%d",sizeof('c')); 结果为什么是4?
    在C语言中,sizeof运算符用于获取数据类型或变量的字节大小。当您使用sizeof('c')时,它会返回字符常量'c'的字节大小。在C语言中,字符常量的类型是int,而不是char。尽管字符常量表示一个字符,但它实际上是以整数形式存储的。因此,sizeof('c')将返回4,即'c'字符常量的字节大小,这是因为......