| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 738 人关注过本帖
标题:数据结构的类型转换?
只看楼主 加入收藏
okayyyy
Rank: 2
等 级:论坛游民
威 望:2
帖 子:102
专家分:70
注 册:2010-6-15
结帖率:81.82%
收藏
已结贴  问题点数:20 回复次数:10 
数据结构的类型转换?
程序代码:
/*typedef struct lnode
{
    int data;
    struct lnode *next;
}lnode,*linklist;*/

lb=malloc(sizeof(linklist));
   
    createlist((linklist)&lb,3);//传个未赋值指针变量的地址


void createlist(linklist la,int i) //
{
   
    linklist l=malloc(sizeof (lnode));
    l->next=0;
    *la=l;//给lb赋值,类型不匹配,怎么改
    while (i>0)
    {
        linklist q=malloc(sizeof (lnode));
        scanf("%d",&q->data);
        q->next=l->next;
        l->next=q;
        i--;
    }
}




[ 本帖最后由 okayyyy 于 2010-8-16 14:00 编辑 ]
搜索更多相关主题的帖子: 数据结构 类型 
2010-08-16 13:41
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:10 
void createlist(linklist la,int i)
你实参是个地址 就是指针了 接收的形参是个结构体变量 类型能匹配么
2010-08-16 13:47
okayyyy
Rank: 2
等 级:论坛游民
威 望:2
帖 子:102
专家分:70
注 册:2010-6-15
收藏
得分:0 
回复 2楼 hahayezhe
我知道是个地址,可我要在子程序里赋值
2010-08-16 13:53
succubus
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:635
专家分:1080
注 册:2007-10-7
收藏
得分:10 
la=l呗

[url=http:///view/aDU1]/image/aDU1.gif" border="0" />[/url]
2010-08-16 14:03
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
地址的话 你当然得这么写了
lb=malloc(sizeof(linklist));
   
    createlist((linklist)&lb,3);//传个未赋值指针变量的地址


void createlist(linklist *la,int i) //
{
   
    linklist l=malloc(sizeof (lnode));
    l->next=0;
    *la=l;//给lb赋值,类型不匹配,怎么改
    while (i>0)
    {
        linklist q=malloc(sizeof (lnode));
        scanf("%d",&q->data);
        q->next=l->next;
        l->next=q;
        i--;
    }
}
再者结构体赋值不能那样的
要么 *la->next=l->next;
要么memcpy(*la,l,sizeof(linklist));

2010-08-16 14:05
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
哦哟 才看明白 你的linklist是 typename struct *
那也要用 linklist *la来接收了
你另形参的指针转向了
*la=l;指针指向了其他的内存空间
你打算把lb以前开辟的内存区域咋整哦
lb=malloc(sizeof(linklist));
由谁来释放呢
2010-08-16 14:08
okayyyy
Rank: 2
等 级:论坛游民
威 望:2
帖 子:102
专家分:70
注 册:2010-6-15
收藏
得分:0 
lb=malloc(sizeof(linklist));//为变量lb分配4b,存放地址大小的内存
createlist((linklist)&lb,3);//把lb的地址传给子程序,
*la=l;//给lb赋值,类型不匹配,怎么改

free(&lb)就可以了
2010-08-16 14:19
okayyyy
Rank: 2
等 级:论坛游民
威 望:2
帖 子:102
专家分:70
注 册:2010-6-15
收藏
得分:0 
算了 我自己搞定了,        
虽然有个警告。
*((int *)la)= l;
2010-08-16 14:21
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
你给指针传一个地址值 需要分配空间吗?
struct node{};
void create(node **p)
{
node *x;
x = new node;
*p=x;
}
int main(){
node *p;
create(&p);
}
不用定义结构体指针 你看明白了没
你那样转换左值的类型 能对?
2010-08-16 14:36
okayyyy
Rank: 2
等 级:论坛游民
威 望:2
帖 子:102
专家分:70
注 册:2010-6-15
收藏
得分:0 
node *p;//定义一个 node指针变量 p,p没空间?

任何变量都有空间,指针变量在 32系统里 占4空间

当然也可以不用空间,你定义一个 0-ffff ffff的常数,不过有谁用这常数使用内存的?

[ 本帖最后由 okayyyy 于 2010-8-16 14:45 编辑 ]
2010-08-16 14:43
快速回复:数据结构的类型转换?
数据加载中...
 
   



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

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