`
美丽的小岛
  • 浏览: 308847 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

C的sizeof函数

    博客分类:
  • c
C 
阅读更多
#include<stdio.h>
/*
关于数据结构的求大小的情况:
#pragma pack(push)
#pragma pack(8)
#pragma pack(pop)
(1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除;
(2) 结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal adding);
(3) 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要编译器会在最末一个成员之后加上填充字节(trailing padding)。
*/
typedef struct t{
  int i ;
  char c ;
  struct t *next ;
}t;
typedef struct t1{
   char c ;
   int b ;
   float  f ;
   double d ;//8字节的double
  }t1;
typedef struct t2{
   t1 t ;
   char s ;
   int ii ;
}t2 ;
int type_test(){
   printf("a") ;
   return 100 ;
}
void type_test2(){
}
void array(int a[10]){
   printf("in functin aizeof(a[10])=%d\n",sizeof(a)) ;//这个变成了指针
}
int main(){
//基本类型
   char c ;
   printf("sizeof(c)=%d\n",sizeof(c)) ;
   short int si ;
   printf("sizeof(si)=%d\n",sizeof(si)) ;
   int b ;
   printf("sizeof(b)=%d\n",sizeof(b)) ;
   float f ;
   printf("sizeof(f)=%d\n",sizeof(f)) ;
   long  l ;
   printf("sizeof(l)=%d\n",sizeof(l)) ;
   long long ll ;
   printf("sizeof(ll)=%d\n",sizeof(ll)) ;
   double d ;
   printf("sizeof(d)=%d\n",sizeof(d)) ;
//结构体
   printf("\n") ;
   printf("sizeof(t)=%d\n",sizeof(t)) ;
   printf("sizeof(t1)=%d\n",sizeof(t1)) ;
   printf("sizeof(t2)=%d\n",sizeof(t2)) ;
//函数
   printf("\n") ;
   printf("sizeof(type_test())=%d\n",sizeof(type_test())) ;//这个函数并没有调用
   printf("sizeof(type_test)=%d\n",sizeof(type_test)) ;
   printf("sizeof(type_test2())=%d\n",sizeof(type_test2())) ;
//指针,32bit的机器,所以所有的Poiter都是4字节的大小
    printf("\n") ;
   char* pc = "abc";
   int* pi;
   char** ppc = &pc;
   double *dp ;
   printf("char pointer:%d\n",sizeof(pc));  // 结果为4
   printf("int pointer:%d\n",sizeof(pi));  // 结果为4
   printf("char pointer pointer:%d\n",sizeof(ppc)); // 结果为4
   printf("double pointer:%d\n",sizeof(dp));  // 结果为4
//数组
   printf("\n") ;
   int a[10] ;
   printf("sizeof(a[10])=%d\n",sizeof(a)) ;
   array(a) ;
   return 0 ;
}

 



 

  • 大小: 7.3 KB
分享到:
评论

相关推荐

    sizeof函数的编写

    不用C中关键字sizeof 计算int型的字节数 要求编写sizeof函数

    C语言中sizeof函数的基本使用总结

    前言 C语言中的sizeof是一个很有意思的关键字,经常有人用不对,搞不清不是什么。我以前也有用错的时候,现在写一写,也算是提醒...sizeof函数的结果: 1.变量:变量所占的字节数。 int i = 0; printf(%d\n, sizeof

    解析C语言中的sizeof.rar

    需要注意的是,当数组作为函数参数传递时,它会退化为指针,因此`sizeof`将返回指针的大小,而不是数组的大小。这是C语言中一个常见的陷阱: ```c void print_size(int arr[5]) { printf("Size of arr in function...

    C语言函数sizeof

    ### C语言中的`sizeof`操作符详解 #### 一、`sizeof`操作符的基本概念 `sizeof`是C语言中的一个单目操作符,用来获取指定类型或变量的存储大小,通常以字节为单位。它并非是一个真正的函数,而是一种特殊的语法...

    C语言常用函数手册C函数速查

    本手册——"C语言常用函数手册",是C程序员的重要参考资料,涵盖了C语言中广泛使用的函数,帮助开发者快速查询和理解函数的用途、参数和返回值。 1. **标准库函数**: - **输入/输出函数**:如`printf`用于格式化...

    sizeof函数使用注意事项

    但是,如果该类具有虚函数,其大小至少为`sizeof(void*)`,因为需要存储虚函数表指针。 9. **字节对齐**:字节对齐会影响`sizeof`的结果,特别是在处理结构体或数组时。编译器会根据特定的对齐规则进行内存布局,...

    电脑中的sizeof函数.pdf

    sizeof函数在C/C++编程语言中扮演着至关重要的角色,它是程序员获取数据类型或变量占用内存大小的关键工具。本文将深入探讨sizeof的定义、用途、使用方法以及需要注意的事项,并通过实例分析来帮助读者更好地理解和...

    详细解析C语言中的sizeof

    ### 详细解析C语言中的`sizeof` #### 一、`sizeof`的概念 `sizeof`是C语言中的一个单目操作符,类似于其他操作符如`++`和`--`等。需要注意的是,`sizeof`不是函数,而是用来获取操作数(可以是一个表达式或类型名...

    电脑中的sizeof函数.docx

    在计算机编程语言C和C++中,`sizeof`是一个非常重要的运算符,它用来获取一个类型或变量在内存中占据的字节数。这个运算符在编写高效且内存管理精细的程序时尤其关键。以下是对`sizeof`函数的详细解释: 1. **什么...

    C语言sizeof用法[借鉴].pdf

    C语言sizeof用法详解 C语言中,sizeof是一个操作符(operator),用于返回一个对象或者类型所占的内存字节数。它的返回值类型为size_t,定义在头文件stddef.h中。 sizeof的作用是简单地返回一个对象或者类型的内存...

    sizeof 的用法(大全)

    在C/C++编程语言中,`sizeof`是一个非常重要的运算符,用于获取变量或类型所占用内存的字节数。本篇文章将全面讲解`sizeof`的用法,并将其与常用的字符串长度函数`strlen()`进行比较,帮助开发者深入理解并解决在...

    C语言函数范例教程大全

    本教程“C语言函数范例教程大全”专注于通过实例教学,帮助学习者深入理解和应用C语言中的函数。 一、函数的基本概念 在C语言中,函数是一组执行特定任务的语句。函数可以接受输入(参数),并返回结果(返回值)。...

    sizeof 用法汇总 C和C++的语法

    `sizeof`是C和C++中的一个非常重要的运算符,用于获取任何数据类型或变量在内存中占用的字节数。下面将详细讲解`sizeof`的用法。 1. `sizeof`与`strlen`的区别: - `strlen()`函数主要用于计算字符数组(字符串)...

    C语言函数大全(语法着色版)

    《C语言函数大全(语法着色版)》是一份针对C语言编程的参考资料,它集成了C语言的各种函数,提供了语法高亮的展示方式,旨在帮助程序员更清晰、直观地理解和掌握C语言中的函数用法。这篇文档不仅包含了标准库函数,也...

    c语言sizeof详解

    C语言sizeof详解 sizeof是C语言中一种重要的单目操作符,它可以返回变量或数据类型的存储大小,以字节为单位。sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型,该类型保证能容纳实现所...

    C语言常用函数电子书

    4. **指针和内存操作函数**:包括`&`取地址运算符,`*`解引用运算符,`sizeof`计算数据类型或变量大小,以及`memcpy()`、`memmove()`、`memset()`等内存操作函数。 5. **文件操作函数**:`fopen()`打开文件,`...

    C语言malloc函数用法

    C语言中的`malloc`函数是动态内存管理的重要工具,它允许程序在运行时根据需要分配内存,而不是在编译期间...`malloc`函数是C语言中实现动态内存管理的基础,理解并正确使用它对于编写高效且内存安全的C程序至关重要。

    c语言函数大全 所有函数

    "C语言函数大全"涵盖了从基本操作到复杂计算的各种函数,它们构成了C语言的核心功能。 1. **基本输入输出函数**: - `printf()`:用于向标准输出设备(通常是屏幕)打印格式化的数据。 - `scanf()`:从标准输入...

    C语言函数大全.txt

    8. 数组和指针相关函数:如`sizeof()`返回变量或数据类型的大小,`memcpy()`和`memmove()`复制内存块,`memset()`设置内存区域的值。 9. 错误处理函数:`errno`全局变量保存错误代码,`perror()`打印错误信息。 ...

Global site tag (gtag.js) - Google Analytics