标题:初来此论坛。。 真心求助! 望有心人帮一下。。
只看楼主
可乐沫沫
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-9-23
结帖率:0
已结贴  问题点数:20 回复次数:6 
初来此论坛。。 真心求助! 望有心人帮一下。。
几个问题 属于比较菜的 但是网上找不到答案 纠结很久的那种。。

1。 (1)如果 typedef struct a B,   然后struct里面是    B *c;
       (2)如果 typedef struct a *B, 然后struct 里面是  B c;
        请问  (1) (2)   效果/ 原理  一样吗??    我貌似都用过 貌似效果一样??

2。如果  typedef struct a *B, 然后 struct里面是  B *c;
    请问这种情况是怎么理解? 有人说是二次指针?? 那该怎么理解呢?

3.
typedef struct record *Item;
typedef struct STabRep *STab;
struct STabRep{
    Item *items;
    int count;
    int size;
};

typedef int Key;    //Can change key type
struct record{
    Key keyVal;
    int value;      //Can change value type
};

这2个typedef 和两个struct;
然后有一个函数

STab stInit(int size){
    int i;
    STab st = malloc(sizeof(struct STabRep));
    assert(st!=NULL);
    st->items = malloc(size * sizeof(Item));
    assert(st->items!=NULL);
    for(i=0;i<size;i++){
        st->items[i] = NULLitem;
    }
    st->count = 0;
    st->size = size;
    return st;
}  
这个函数里面   我不明白 items是Item型的 也就是说 他是一个struct record, 他应该有 items->keyVal 和 items->value。 可是为什么他自己变成了一个数组?? 这里很搞不清楚。。 而且上面的第二个typedef 和 第一个struct 就是我的 第二个问题里的情况  

谢谢大家了 第一次来 不知道我的问题是不是很烂。。见丑了
搜索更多相关主题的帖子: 真心 有心人 
2010-09-23 12:30
可乐沫沫
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-9-23
得分:0 
求助好人啊!!
2010-09-23 20:42
WDMfans
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:168
注 册:2010-9-19
得分:10 
都一样
(1)如果 typedef struct a B,   然后struct里面是    B *c; *c指向结构B
(2)如果 typedef struct a *B, 然后struct 里面是    B c;  c指向结构B
     
 如果 typedef struct a *B,  
通俗点来讲:typedef struct a *B;指针变量实质是一个保存地址的变量。B=结构的地址。*B=结构变量。

然后 struct里面是  B *c;*c=B,*(*c)=结构变量




[ 本帖最后由 WDMfans 于 2010-9-23 21:27 编辑 ]
2010-09-23 21:21
可乐沫沫
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-9-23
得分:0 
以下是引用WDMfans在2010-9-23 21:21:37的发言:

都一样
(1)如果 typedef struct a B,   然后struct里面是    B *c; *c指向结构B
(2)如果 typedef struct a *B, 然后struct 里面是    B c;  c指向结构B
     
 如果 typedef struct a *B,  
通俗点来讲:typedef struct a *B;指针变量实质是一个保存地址的变量。B=结构的地址。*B=结构变量。

然后 struct里面是  B *c;*c=B,*(*c)=结构变量


抱歉。。 可能我理解力有点低。。 还是不太懂。。 第一个问题 你说 都一样 是说 效果和作用都是一样的对嘛?

第二个问题 我还是不太理解.. 举点实例?
2010-09-23 21:42
真我
Rank: 4
等 级:业余侠客
威 望:1
帖 子:146
专家分:210
注 册:2010-7-14
得分:10 
(2)如果 typedef struct a *B,
纯属自己找累,助记的东西前面还加个*
2010-09-23 22:32
WDMfans
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:168
注 册:2010-9-19
得分:0 
typedef struct a *B
typedef struct a  B
楼上的也说了 *只不过是个多余的符号,他只起到提醒你自己的作用。
是把变量当普通变量用,还是当指针用
就算这样定义 typedef struct a B。你也可以把B当指针用的。*(&B)=B
上面发的贴就把实例解说了一遍。唯一容易看懂的实例就是画图解说。

调试是编程的基础,不调试永远也提高不了编程水平。

只有调试过代码,才能提高对代码的掌控能力
2010-09-23 22:57
可乐沫沫
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-9-23
得分:0 
额。。好。。 那第三个问题呢?? 谁帮忙解释一下意思。。有点想不通
2010-09-24 08:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-321148-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.752668 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved