C语言 sizeof操作符

简介: C语言 sizeof操作符

sizeof操作符


sizeof是c语言中的一个操作符,类似于++、–等等。sizeof能够告诉我们编译器为某一特定数据或者某一个类型的数据在内存中分配空间时分配的大小,大小以字节为单位。


基本语法:


sizeof(变量);
sizeof 变量;
sizeof(类型);


sizeof 注意点:


  • sizeof返回的占用空间大小是为这个变量开辟的大小,而不只是它用到的空间。和现今住房的建筑面积和实用面积的概念差不多。所以对结构体用的时候,大多情况下就得考虑字节对齐的问题了;


  • ※ sizeof返回的数据结果类型是unsigned int;


  • 要注意数组名和指针变量的区别。通常情况下,我们总觉得数组名和指针变量差不多,但是在用sizeof的时候差别很大,对数组名用sizeof返回的是整个数组的大小,而对指针变量进行操作的时候返回的则是指针变量本身所占得空间,在32位机的条件下一般都是4。而且当数组名作为函数参数时,在函数内部,形参也就是个指针,所以不再返回数组的大小;


示例代码:


1. sizeof基本用法


//1. sizeof基本用法
void test01(){
  int a = 10;
  printf("len:%d\n", sizeof(a));
  printf("len:%d\n", sizeof(int));
  printf("len:%d\n", sizeof a);
}



2. sizeof 结果类型


//2. sizeof 结果类型
void test02(){
  unsigned int a = 10;
  if (a - 11 < 0){
    printf("结果小于0\n");
  }
  else{
    printf("结果大于0\n");
  }
  int b = 5;
  if (sizeof(b) - 10 < 0){
    printf("结果小于0\n");
  }
  else{
    printf("结果大于0\n");
  }
}



3. sizeof 碰到数组


//3. sizeof 碰到数组
void TestArray(int arr[]){
  printf("数组TestArray arr size:%d\n",sizeof(arr));
}
void test03(){
  int arr[] = { 10, 20, 30, 40, 50 };
  printf("数组array的 size: %d\n",sizeof(arr));
//数组名在某些情况下等价于指针
  int* pArr = arr;
  printf("arr[2]:%d\n",pArr[2]);
  printf("array size: %d\n", sizeof(pArr));
  //数组做函数函数参数,将退化为指针,在函数内部不再返回数组大小
  TestArray(arr);
}


e1aa412db11ce8a75b7efe182edcc71a_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5rWB5qWa5Li25qC85b-1,size_20,color_FFFFFF,t_70,g_se,x_16.png

相关文章
|
12天前
|
存储 编译器 C语言
爱上C语言:操作符详解(下)
爱上C语言:操作符详解(下)
|
24天前
|
算法 测试技术 C语言
【C语言】异或(^)操作符
【C语言】异或(^)操作符
16 0
|
1月前
|
存储 算法 程序员
【c 语言 】位操作符详解
【c 语言 】位操作符详解
36 0
|
1月前
|
存储 编译器 Linux
操作符详解【c语言】
操作符详解【c语言】
|
1月前
|
C语言
如何在C 语言中使用运算符sizeof
如何在C 语言中使用运算符sizeof
12 0
|
1月前
|
C语言
【C语言】位操作符详解
【C语言】位操作符详解
22 0
|
1月前
|
存储 C语言
【C语言】位与移位操作符详解
【C语言】位与移位操作符详解
【C语言】位与移位操作符详解
|
1月前
|
C语言
【C语言】指针进阶之sizeof和strlen函数的对比
【C语言】指针进阶之sizeof和strlen函数的对比
|
1月前
|
C语言
C语言------操作符的巧妙使用
C语言------操作符的巧妙使用
21 0
|
1月前
|
编译器 C语言
C语言---------对操作符的进一步认识
C语言---------对操作符的进一步认识
22 0