C/C++中 sizeof()与strlen()的区别
来源:互联网 发布:vscode微信小程序插件 编辑:程序博客网 时间:2024/05/13 10:54
一。概念
1.strlen()
strlen()是库函数,只有在运行时执行。
2. sizeof()
sizeof()是运算符,用作计算类型的大小,结果类型是size_t,编译时执行,参数可以是数组、指针、类型、对象、函数等。参数类型与功能关系如下所示。 数组:分配数组空间的大小;
指针:指针所占空间大小(32bit:4、64bit:8);
类型:类型所占空间大小;
结构体:结构体对象所占空间大小;
类:类对象所占空间大小;
函数:函数的返回类型所占的空间大小,函数的返回类型不能是void。
由于是在在编译时计算,因此sizeof()不能计算动态分配的内存空间的大小。
二。代码
//strlen() 与 sizeof() 两个函数的区别
#include "string.h"
#include "stdio.h"
#define MYNAME "abcdefghijk"
#define MAX_NMAE_LEN 20
struct MyStruct
{
int a;
char b;
};
int main()
{ //不同平台不同编译器对比 //vs&win32 //g++&Ubn64
long lCount = sizeof( MYNAME ); //12 //12
char szName[MAX_NMAE_LEN] ;
char *ptName = new char[MAX_NMAE_LEN];
lCount = strlen( szName ); //29 //0
lCount = sizeof( szName ); //20 //20
lCount = strlen( ptName ); //32 //0
lCount = sizeof( ptName ); //4 //8
strcpy( szName, MYNAME );
strcpy( ptName, MYNAME );
lCount = strlen( szName ); //11 //11
lCount = sizeof( szName ); //20 //20
lCount = strlen( ptName ); //11 //11
lCount = sizeof( ptName ); //4 //8
lCount = sizeof( int ); //4
lCount = sizeof( char ); //1
MyStruct szStruct[10];
lCount = sizeof( MyStruct ); //8
lCount = sizeof( szStruct ); //80
return 0;
}
- C++(C)中Sizeof与Strlen的区别
- C语言中sizeof与strlen区别
- C语言中sizeof与strlen区别
- C语言中sizeof与strlen区别
- C语言中sizeof与strlen区别
- C语言中sizeof与strlen区别
- C语言中sizeof 与strlen 区别
- C语言中sizeof与strlen区别
- C语言中sizeof与strlen区别
- C语言中sizeof与strlen的区别是什么
- C/C++中 sizeof()与strlen()的区别
- C语言中strlen与sizeof的区别
- C/C++中sizeof与strlen的区别
- C语言中sizeof和strlen的区别与联系
- C语言中Sizeof与Strlen的区别
- C++-sizeof()与strlen()的区别
- C语言:strlen与sizeof的区别
- C/C++:Sizeof与Strlen的区别与联系
- 心想事成的“秘密”
- [译]SSAS下玩转PowerShell(二)
- 给定任意一个字符串,找出所有重复字符的重复的次数
- SpringMVC学习系列(9) 之 实现注解式权限验证
- mac 中的前端开发 环境搭建
- C/C++中 sizeof()与strlen()的区别
- 螺旋矩阵的实现
- Flume-NG源码阅读之SinkGroups和SinkRunner
- property—ant入门指南(5)
- 过度扩容 A股“虚胖”
- Azure China (4) 管理Azure China Storage Account
- 双向链表的创建、结点的插入、删除与打印
- 创业者大会:新一切、更大压力与我们的时代
- 让不同的应用apk跑在一个进程process里