空数组的内存地址

定义如下一个struct

struct T
{

    
int a;
    
int b[0];
    
int c;
};
打印各个成员的地址和大小,结果如下:
编译环境Code::Blocks 10.05
    struct T t;

    printf(
"%p:%d\n",&(t.a),sizeof(t.a));
    printf(
"%p:%d\n",&(t.b),sizeof(t.b));
    printf(
"%p:%d\n",&(t.c),sizeof(t.c));

0022FF38:4
0022FF3C:
0
0022FF3C:
4
可见定义的空数组,是不占任何空间的。其返回的内存地址是下一个可分配的地址。

posted on 2010-07-18 01:12 role0523 阅读(403) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2024年3月>
252627282912
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

常用链接

留言簿

随笔档案

搜索

最新评论

  • 1. re: i++与++i
  • @role0523
    基本上是没有去区别的,有时候++i能被优化掉,但很多时候编译器能发现他们是一样的,所以没有区别。
  • --chaogu
  • 2. re: i++与++i
  • @chaogu
    忘记在谁的blog上看到在比较i++和++i哪个操作更高效,于是就看看他们汇编指令的条数。其实大多数时候都是一样的。
  • --role0523
  • 3. re: 数组越界的陷阱
  • @陈梓瀚(vczh)
    嵌入式项目中 vector还是比较慎用的
  • --role0523
  • 4. re: 数组越界的陷阱
  • 不如用vector代替你的if
  • --陈梓瀚(vczh)
  • 5. re: i++与++i
  • 用汇编表达了一个很早就被默认了的定理,好还是不好呢?
  • --chaogu

阅读排行榜

评论排行榜