sizeof

  1. sizeof 是C语言中的一个运算符(主要sizeof不是函数,虽然用法很想函数),sizeof的作用是用来返回 ()里面的变量或者数据类型占用的内存字节数。

  2. sizeof存在的价值?
    主要是在不同平台下各种数据类型所占的内存字节数不仅相同(譬如int在32位系统中为4字节,在16位系统中为2字节,在64位系统为8字节)。所以程序中需要使用sizeof来判断当前变量/数据类型在当前环境下所占几个字节。

  3. 举个栗子

    #include <stdio.h>
    int main()
    { 
    	char t[]="hello";
    	printf("sizeof(t)=%d\n",sizeof(t)); //打印为6
    	printf("sizeof(t[0])=%d\n",sizeof(t[0]));//打印为1
    	printf("strlen(t)=%d\n",strlen(t));//打印为5,不算最后的\0
    
    	char *p=t;
    	printf("sizeof(p)=%d\n",sizeof(p)); //打印4 ,相当于sizeof(char *)
    	printf("sizeof(*p)=%d\n",sizeof(*p));//打印1 ,*p指向的是char类型,相当于sizeof(char)
    	printf("strlen(p)=%d\n",strlen(p));//打印为5,不算最后的\0,相当于是strlen(t)
    	return 0;
    }
  4. 干货

  • 32为系统中所有指针的长度都是4

  • strlen是一个c库函数,用于返回一个字符串的长度(注意字符串长度不计算末尾的’\0’),strlen接收的参数一定是字符串(字符串特征是以’\0’为结尾)

  • sizeof测试一个变量本身和sizeof测试这个变量类型的结果是一样的

  • sizeof参数为数组名,计算的就是数组所占的内存大小,int b[100]={0}; sizeof(b)的结果就是100*sizeof(int)

  • 函数形参是数组时,实际传递的不是整个数组,而是数组的首地址,相当于传递的是指针

    举例 :

    #include <stdio.h>
       
       void func(int a[10])
       {
      		printf("sizeof(a)=%d\n",sizeof(a));// 结果等于sizeof(int)
       }
           int main()
       { 
        int t[10]={0};
        func(t);
        return 0;
       }

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!

git使用笔记 下一篇