sizeof与strlen

来源:互联网 发布:天蝎网络第二季看不到 编辑:程序博客网 时间:2024/06/05 04:10
概述

sizeof():是运算符,在头文件中typedefunsigned int,其值在编译时即计算好了,
                       参数可以是数组、指针、类型、对象、函数等。
   功能是:获得保证能容纳实现所建立的最大对象的字节大小。

strlen():是函数,要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,
                         实际上数组就退化成指针了。
   功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际
                        完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL
                        返回的长度大小不包括NULL

1、
char* ss = "0123456789"
        sizeof(ss);    //结果 4 ;
        sizeof(*ss);  //结果 1;*ss其实是获得了字符串的第一位'0'所占的内存空间;
        strlen(ss);   //结果是10 ;

char str[20] = "0123456789"
         sizeof(str) = 20
         strlen(str) = 10

char*str="i am ok!"

    sizeof(str)=4,     因为str是个指针变量,

     sizeof("i am ok!")=9;这里有5个字符,2个空格,1个叹号,还有字符串的结束符‘/0';

2、

int *p = NULL;     //  sizeof(p)=4,    sizeof(*p)=4

int a[100];          // sizeof(a)=400,   sizeof(&a)=4 ,     sizeof(a[100])=4 ,  sizeof(&a[0])=4

int b[100];

void fun(int b[100])

  sizeof(b); }         //   sizeof(b)=4 

char (*pArray1)[4]={0};                             sizof(pArrya1)=4,
char (*pArray2[10])[4]={0};                       sizof(pArrya2)=40, 
char (*pArray3[100])[4]={0};                     sizof(pArrya3)=400
                        

   3、

   int *p=malloc(100);  // sizeof(p) = 4         sizeof(p) 只能测定 指针大小,32位机上得4。    

                                                               sizeof 不能测定动态分配的数组大小

  int b[ ][3] = {{1},{3,2},{4,5,6},{0}};中,sizeof(b) = 48





原创粉丝点击