Chinaunix

标题: 一个结构数组初始化问题 [打印本页]

作者: DaemonBSD    时间: 2006-03-30 20:55
标题: 一个结构数组初始化问题
下面程序中有一句初始化错误了。想了半天不知道为什么,望指点。。。。。

  1. typedef int KeyType;

  2. typedef struct {
  3.         KeyType        key;
  4. }ElemType, KeyArray[NKEYS];

  5. typedef struct {
  6.         KeyArray        keytab;
  7.         int        length;
  8. }SSTable, *SSTablePtr;

  9. int main(){
  10.         SSTable ST;
  11.         SSTablePtr STPtr = &ST;
  12.         KeyArray array = {1, 2, 3};        /*这里初始化正确*/
  13.         printf ("array[1] = %d", array[1].key);
  14.         STPtr->keytab[1].key = 1;
  15.         STPtr->keytab = {0, 10, 20};        /*这里初始化却错了*/
  16.        
  17.         return 0;
  18. }
复制代码

作者: usbboy    时间: 2006-03-30 21:40
原帖由 DaemonBSD 于 2006-3-30 20:55 发表
下面程序中有一句初始化错误了。想了半天不知道为什么,望指点。。。。。

[code]typedef int KeyType;

typedef struct {
        KeyType        key;
}ElemType, KeyArray[NKEYS];

typedef struct {
        KeyArray        key ...

STPtr->keytab = {0, 10, 20};        /*这里初始化却错了*/
这里不是初始化了 是赋值操作 有区别的

你这是一个嵌套结构体
初始化时候内层括号可以省略 系统会按顺序分配值  
赋值就不一定接受这种形式了 {0,10,20} ,尤其还省略了内层括号
你可以看看 改为{{0},{10},{20}}
作者: DaemonBSD    时间: 2006-03-30 22:01
我之前也试过了。。。还是错




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