现在的位置: 首页 > 综合 > 正文

C/C++中 sizeof()与strlen()的区别

2018年01月11日 ⁄ 综合 ⁄ 共 1362字 ⁄ 字号 评论关闭

一。概念

    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;
}

抱歉!评论已关闭.