sizeof问题

转载 2015年11月18日 10:01:16
下面仅为个人理解,编译器中验证外,没有任何理论依靠,若有错误请指出。
 
 
       首先,sizeof是一个关键字并不是一个函数。或许你有疑问,既然是一个关键字,为什么出现sizeof的时候后面操作对象都加上括号哪?原因如下。
1. sizeof int ,结果为4,说明 sizeof说明他不是一个函数。
2.siezof(int )是关键字,为什么分开标记,比方 int i;int i,j;使用空格、逗号区分关键字和操作对象, 请测试 int(i),你很惊
  奇的发现这句话竟然可以编译通过没有报错,这句话的作用是相当于 int i,原因如下,int i,我们从原理上分析这句话,空格起
  的是一个分割的作用,有用区分变量和变量类型。 int(i)同样也起到了区分变量和变量类型的,由于()的优先级别高,所以括号里
  边、外边成为两部分,这样与 int i;的功能相同
3.sizeof后面为什么一直有括号
    sizeof struct  student;这一句话将会,编译失败,因为 sizeof 将 struct作为操作数,而并非将整个 struct  student 作为操作数,
 这是因为优先级别的问题,
   int a;sizeof a+1;结果值为5; 原因如下 sizeof(a)+1;
    在sizeof后面加上括号,很容易区分操作对象,不容易出现歧义,去除优先级别错误
 
 
下面举例说明 sizeof 容易出差的地方。
 
char a[100]="三月软件工作室----Reage";
char *p,*p1=a;
 
sizeof p;或许你认为结果为1,可是错了,结果是一个4,因为p是一个指针,是一个地址,地址一个unsigned long型的变量,
              所以结果为4;
 
 sizeof p1;  值为4, 这个你或许认为没有意义,但是我是为下面一个做铺垫的
 
 sizeof(a) =100;  ??为什么 sizeof(p1)为4,这里面涉及到汇编知识,a[100]在汇编中应该定义为  a .fill 100 0;所以测
          试a的值是一个应该是一个100,而p1的值不是
sizeof( &a)  vc= 100 ,gcc= 4; 我个人认为gcc的值是正确的,应为&a的地址得到的是一个地址的地址,还是地址 所以值
  应该为4
 
sizeof(&a[0])  4;没有疑问
 
struct b{char c};sizeof(b)=1;
 
连接地址:http://blog.csdn.net/rentiansheng/article/details/7952100

相关文章推荐

sizeof 与结构体大小及结构体对齐问题, 字节对齐

遇到了这样的情况 有如下结构体 struct ST_1 {       char a;       double b;       char c; };   1. 写入文件 ST_1 st; st.a...
  • cay22
  • cay22
  • 2012年03月07日 13:08
  • 772

求一个类的sizeof应考虑的问题

昨天面试,面试官让我说一说求一个类的sizeof应该考虑的问题,心想,太好了,之前sizeof可是做了不少功夫,就说了类的非静态、非全局成员,如果有虚函数就要加上一个指向虚表的指针,4字节大小,然后说...

sizeof(string)的问题(很经典)

今天看到一个代码,刚开始没有看明白,代码如下: #include #include using namespace std; void main() { string a="www.ok2002.co...

计算机大端模式和小端模式 内存对齐问题(sizeof)

一、大端模式和小端模式的起源         关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个...

C++类中包含stl容器时,使用sizeof求大小的问题

这里的大小指的是sizeof(a class object)的值,也就是一个类的对象所占的字节大小,原来我一直认为类的大小会随着类成员中容器元素个数的变化而变化,后来想想又想不通,所以写了下面的代码用...

C_语法概念_sizeof()功能:计算数据空间的字节数以及字节对齐问题

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

VC中结构体内存分配问题透析(sizeof)

【原文地址】http://xfeng.bloghome.cn/posts/53651.html在一次面试中,遇到了VC中处理结构体的问题,由于平时没留意,没有回答出来,感觉很不爽。回来后,认真分析了下...

C/C++刁钻问题各个击破之细说sizeof

摘要:Sizeof的作用非常简单:求对象或者类型的大小。然而sizeof又非常复杂,它涉及到很多特殊情况,本篇把这些情况分门别类,总结出了sizeof的10个特性:(0)sizeof是运算符,不是函数...

sizeof运算符的内存对齐问题

一、什么是字节对齐 计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按...

结构体的sizeof 问题以及如何求每个元素的偏移量

struct S1{char c;int i;};问sizeof(s1)等于多少聪明的你开始思考了,char占1个字节,int占4个字节,那么加起来就应该是5。是这样吗你在你机器上试过了吗也许你是对的...
  • anyshu1
  • anyshu1
  • 2011年03月31日 10:01
  • 280
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sizeof问题
举报原因:
原因补充:

(最多只允许输入30个字)