Chinaunix

标题: 问个结构体和字符串关系的问题 [打印本页]

作者: erlangs    时间: 2010-12-14 10:01
标题: 问个结构体和字符串关系的问题
  1. struct t1 {
  2.     unsigned int i1:8;
  3.     unsigned int i2:8;
  4.     char nul;
  5. };
  6. typedef struct t1 TT;

  7. int main(void)
  8. {
  9.     TT *tt;
  10.     tt->i1 = 68;
  11.     tt->i2 = 69;
  12.     tt->nul='\0';
  13.     printf("%s\n",tt);
  14.         return 0;
  15. }
复制代码
结构体在任何编译器中都是有序的一段线性空间吗?
这个打印结果恒等于"DE"吗?
作者: liexusong    时间: 2010-12-14 10:08
很难说吧,如果有对齐的话就有时候出现问题吧
作者: davelv    时间: 2010-12-14 10:09
不是恒等的,因为你的程序坏掉了。
作者: rubylc_unix    时间: 2010-12-14 10:09
段错误阿!{:3_191:}
作者: hellioncu    时间: 2010-12-14 10:41
都8,用啥位域呀
作者: erlangs    时间: 2010-12-14 11:57
位域只是一个假设没有对齐问题
做通信协议栈时使用到,期待可转化为字符串形式发送或接收,这样处理起来貌似简单
就是不确定结构中每个元素的排列是否为固定顺序
作者: hellioncu    时间: 2010-12-14 12:09
位域只是一个假设没有对齐问题
做通信协议栈时使用到,期待可转化为字符串形式发送或接收,这样处理起来貌似 ...
erlangs 发表于 2010-12-14 11:57



    我印象中位域的次序是不一定的,移植性不好
作者: jhui66    时间: 2010-12-14 12:15
呵呵呵,学习
作者: 雨夜流星    时间: 2010-12-14 12:24
回复 1# erlangs


    这个结果肯定是不一定嘛,
   你的TT *tt;都没有初始化,很容易久段错误了嘛。。。
作者: erlangs    时间: 2010-12-14 12:28
回复  erlangs


    这个结果肯定是不一定嘛,
   你的TT *tt;都没有初始化,很容易久段错误了嘛。。 ...
雨夜流星 发表于 2010-12-14 12:24



   

嗯,没说清楚,类似伪代码的说明,知道意思就可以了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2