sizeof

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;
     }     
    
  • 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;
          }
    
posted @ 2021-12-31 15:07  寒心雨梦  阅读(103)  评论(0)    收藏  举报