当前位置:网站首页>C语言sizeof和strlen的区别
C语言sizeof和strlen的区别
2022-07-06 02:36:00 【小阳先生的宝库】
主要区别如下:
1、sizeof是运算符,strlen是C语言标准库函数。
2、 strlen 测量的是字符串的实际长度,以’\0’ 结束,返回结果不包括’\0’ 。
3、而sizeof 测量的是字符的分配大小,它的参数可以是数组、指针、类型、对象、函数等。
具体而言,当参数分别如下时,sizeof返回的值含义如下:
数组-编译时分配的数组空间大小;
指针-存储该指针所用的空间大小;
类型-该类型所占的空间的大小;
对象-对象的实际占用空间大小;
函数-函数返回类型所占空间的大小;
例题1:
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,指针大小
————————————————
版权声明:本文为CSDN博主「贤瓜苦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_52368521/article/details/124950895
边栏推荐
- 【MySQL 15】Could not increase number of max_open_files to more than 10000 (request: 65535)
- Apt installation ZABBIX
- Building the prototype of library functions -- refer to the manual of wildfire
- GifCam v7.0 极简GIF动画录制工具中文单文件版
- 剑指 Offer 30. 包含min函数的栈
- Dachang image library
- General process of machine learning training and parameter optimization (discussion)
- [coppeliasim] 6-DOF path planning
- Multiple solutions to one problem, asp Net core application startup initialization n schemes [Part 1]
- 爬虫(9) - Scrapy框架(1) | Scrapy 异步网络爬虫框架
猜你喜欢
解决:AttributeError: ‘str‘ object has no attribute ‘decode‘
零基础自学STM32-野火——GPIO复习篇——使用绝对地址操作GPIO
Zero basic self-study STM32 wildfire review of GPIO use absolute address to operate GPIO
[postgraduate entrance examination English] prepare for 2023, learn list5 words
Shell script updates stored procedure to database
Sword finger offer 30 Stack containing min function
Déduisez la question d'aujourd'hui - 729. Mon emploi du temps I
Initial understanding of pointer variables
Sword finger offer 29 Print matrix clockwise
[Yunju entrepreneurial foundation notes] Chapter II entrepreneur test 11
随机推荐
MySQL winter vacation self-study 2022 11 (6)
Reset nodejs of the system
[Wu Enda machine learning] week5 programming assignment EX4 - neural network learning
Patch NTP server at the beginning of DDoS counterattack
QT release exe software and modify exe application icon
inherited constructors
Pure QT version of Chinese chess: realize two-man, man-machine and network games
[matlab] access of variables and files
UE4 - how to make a simple TPS role (I) - create a basic role
[Yunju entrepreneurial foundation notes] Chapter II entrepreneur test 19
Is there a case where sqlcdc monitors multiple tables and then associates them to sink to another table? All operations in MySQL
General process of machine learning training and parameter optimization (discussion)
2022 eye health exhibition, vision rehabilitation exhibition, optometry equipment exhibition, eye care products exhibition, eye mask Exhibition
A doctor's 22 years in Huawei
Zero basic self-study STM32 wildfire review of GPIO use absolute address to operate GPIO
Building the prototype of library functions -- refer to the manual of wildfire
SQL table name is passed as a parameter
Six stone management: why should leaders ignore product quality
Redis installation
550 permission denied occurs when FTP uploads files, which is not a user permission problem