天天看点

sizeof函数和strlen()函数

 sizeof函数功能:计算数据空间的字节数  在32或者64位编译器下所占字节是不同的,具体如下:

     1、32位编译器:

                   32位系统下指针占用4字节;

char

:1个字节

char

*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)

short

int

: 2个字节

int

  4个字节

unsigned 

int

: 4个字节

float

:

  4个字节

double

:

   8个字节

long

:

   4个字节

long

long

:

  8个字节

unsigned 

long

:

  4个字节

2、64位编译器:

      64位系统下指针占用8字节

char

:1个字节

char

*

(即指针变量): 8个字节

short

int

: 2个字节

int

  4个字节

unsigned 

int

: 4个字节

float

:

  4个字节

double

:

   8个字节

long

  8个字节

long

long

:

  8个字节

unsigned 

long

:

  8个字节

关于strlen()函数的使用说明  strlen()函数用来计算字符串的长度,其原型为:unsigned int strlen(char*s)

1、strlen()用来计算指定的字符串s的实际长度,不包括结束字符“\0”;

例1:    char str[100]=“http://see.xidian.edu.cn./cpp/u/biaozhunku/”;    定义了一个大小为100的字符数组,但是仅有开始的43个字符被初始化了,剩下的都是0,    sizeof(str)等于100    strlen(str)等于43.  但是需注意:如果字符的个数等于字符数组的大小,那么strlen()的返回值就无法确定了 例2:     char str[6]="abcxyz";     strlen(str)的返回值是不确定的。  strlen()函数计算的是字符串的实际长度,遇到第一个“\0”结束,如果只对字符数组定义但没有给他赋初值,这个结果是不定的,它会  从首地址一直找下去,直到遇到‘\0’停止。而sizeof()返回的是变量申明后所占的内存数,不是实际长度,此外sizeof不是函数,仅仅是  一个操作符,strlen()是函数。 例

继续阅读