`
美丽的小岛
  • 浏览: 297432 次
  • 性别: 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

    sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定...

    sizeof函数使用注意事项

    关于c/c++函数中sizeof的使用,以及使用过程中的一下细节注意

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

    sizeof()用法汇总 sizeof()功能:计算数据空间的字节数 1.与strlen()比较 strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。 .......

    C中sizeof()函数的精确解释

    关于在C中sizeof()函数的精确解释,很多人由于笔试,学习等等遇到问这个问题,就解释一下吧!结合结构体,结构体元素等等,具体说明,希望可以帮助大家!

    C语言memset函数使用方法详解

    C语言memset函数使用方法详解 一。函数原形 void * memset(void*s, int ch,size_t n) 二。函数作用 将以s内存地址为首的连续n个字节的内容置成ch,一般用来对大量结构体和数组进行清零 三。常见错误 1.搞反...

    C++ sizeof 实例解析

    在C++中使用sizeof要比C复杂很多,因为C++类中有static静态变量,virtual虚函数,还有继承、派生等。sizeof是C语言的一种单目操作符,如C语言的其他操作符++、–等。它并不是函数。sizeof操作符以字节形式给出了其...

    C语言介绍sizeof的使用方法,可以直接编译使用

    程序的开头,我们包含了stdio.h头文件,它是C语言标准库文件之一,该文件包含了打印输出和读取输入等函数。 此程序中的关键是sizeof运算符,它是C语言的内建运算符,用于获取特定类型或特定变量在内存中的大小(以...

    C语言中sizeof()与strlen()函数的使用入门及对比

    sizeof()函数 1,是什么?  sizeof其实就是一个运算符,和那些+,-一样的东西,在程序编译的时候进行解析转换。虽然我们经常见到sizeof后面跟着个小括号,长得和函数差不多,但它和函数完全是两码事。 2,有什么用? ...

    sizeof()简介

    C语言中,简述了sizeof函数的用法,其中主要阐述了对于各种数据类型,以及指针的测试大小。

    sizeof用法

    详细解释了sizeof用法,包括函数入口参数,数组与sizeof之间的用法。包括sizeof的概念、sizeof的使用方法、sizeof与其他操作符的关系、sizeof与指针之间的关系等

    不使用sizeof 判断一个数据所占的内存大小

    这个是我在笔试一家全英文笔试题的时候,绞尽脑汁才看懂的一个题目。

    sizeof:获取JavaScript对象的大小

    JavaScript不提供sizeof(类似于C语言),并且程序员无需关心内存分配/重新分配。 但是,根据,每个String值均由16位无符号整数表示,Number使用双精度64位格式IEEE 754值,包括特殊的“非数字”(NaN)值,正无穷...

    sizeof的具体用法

    sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定...

    C、C++ 语言中的函数strlen和sizeof的区别

    strlen和sizeof的区别

    富士通笔试题与解答 经典

    答:函数和变量被C++编译后在符号库中的名字与C语言的不同,被extern "C"修饰的变量和函数是按照C语言方式编译和连接的。由于编译后的名字不同,C++程序不能直接调用C 函数。C++提供了一个C 连接交换指定符号extern...

    LinuxC https请求 源码 一个函数搞定

    一个函数搞定 直接调用 用法如下: int main() { char rsp_buf[2048]={0}; //只发请求 不需要等待回复 https_get_request("ipx.xxx.xxx.xx",NULL,80,"xxxx/xxx.req?aa=21"); //替换成自己需要的HTTP请求 //发...

Global site tag (gtag.js) - Google Analytics