| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 424 人关注过本帖
标题:关于结构体指针问题。
只看楼主 加入收藏
米兰的大铁匠
Rank: 2
来 自:天外
等 级:论坛游民
帖 子:61
专家分:84
注 册:2013-7-16
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:4 
关于结构体指针问题。
typedef struct data
{
    char c;
    int freq;
    int code;
    int size;
} Data;
typedef struct node
{
    void* data;
    struct node* prev;
    struct node* next;
    struct node* parent;
    struct node* lchild;
    struct node* rchild;
} Node;


Node* cur = NULL;
    for (cur = list->head->next; cur != list->head; cur = cur->next)
        printf("(%c %d) ",
            ((Data*)cur->data)->c,
            ((Data*)cur->data)->freq);//这一句表示什么含义(我没把整个函数代码写全)


for (cur = list->head->next; cur != list->head && ((Data*)cur->data)->freq < data->freq; cur = cur->next) // 或者是((Date*)cur->data)->freq < data -> freq 是什么意思
                    ;
搜索更多相关主题的帖子: parent 结构体 
2013-08-29 18:57
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:20 
cur是Node *类型,因此里面有data成员,因为data是void *类型,因此可以强制转为Data *类型,这种类型里面有freq成员

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-08-29 19:34
米兰的大铁匠
Rank: 2
来 自:天外
等 级:论坛游民
帖 子:61
专家分:84
注 册:2013-7-16
收藏
得分:0 
回复 2楼 pauljames
那((Date*)cur->data)->freq < data -> freq 是什么意思?
2013-08-29 20:06
FPGA00
Rank: 1
等 级:新手上路
帖 子:6
专家分:6
注 册:2013-8-19
收藏
得分:0 
回复 3楼 米兰的大铁匠
应该是强制将Node类型转换为Data类型,你编译的时候看看变量存储空间大小就可以判断是什么回事了
2013-08-31 09:27
Yeewee
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-8-31
收藏
得分:0 
首先楼主应该是把(Data*)打成(Date*)了。
cur是一个指向Node结构的指针,cur->data表示的是一个指向void类型的指针,
如果你需要取出Data结构中的freq成员,必须使用强制类型转换(Data*)
把(cur->data)转换成指向Data结构的指针,所以{((Data*)cur->data)->freq
< data->freq }这句代码的意思就是比较前后两个指针指向的freq成员的值的大小。
2013-08-31 11:34
快速回复:关于结构体指针问题。
数据加载中...
 
   



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

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