| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 215 人关注过本帖
标题:关于结构体强制类型转换问题
只看楼主 加入收藏
TIMFannie
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2017-10-15
结帖率:84.21%
  已结贴   问题点数:20  回复次数:3   
关于结构体强制类型转换问题
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
struct examp_1
{
    int a;
    char b;
    char c[10];
};

struct examp_2
{
    int a;
    char b;
    char *c;
};

main()
{
    examp_1 *y;   
    examp_2 *x;
    y=(examp_1 *)malloc(sizeof(struct examp_1));
    y->a=2;
    y->b='t';
    for(int i=0;i<10;i++)
    y->c[i]=i+48;
    printf("%d\n    %c\n     %s\n",y->a,y->b,y->c);
    getch();
    x=(struct examp_2 *)y; //这里强制类型转换错误 ,程序运行到这就终止了,我查了百度,好像就是这么做的,麻烦帮我看下
    printf("after:\n%d\n    %c\n   %s\n",&x->a,&x->b,x->c);
   
}
2018-03-10 15:14
TIMFannie
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2017-10-15
  得分:0 
拜托了
2018-03-10 15:14
TIMFannie
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2017-10-15
  得分:0 
弄了好久弄不明白怎么把struct examp_1结构体变量y强制类型转换为struct examp_2结构体变量x。百度说用指针来实现,我也这么用了还是不能成?
2018-03-10 15:37
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:157
帖 子:6120
专家分:26729
注 册:2014-5-20
  得分:20 
#include<stdio.h>
#include<stdlib.h>

struct examp_1
{
    int a;
    char b;
    char c[10];
};

struct examp_2
{
    int a;
    char b;
    char c[];
};

main()
{
    struct examp_1 *y = (struct examp_1 *)malloc(sizeof(struct examp_1));
    struct examp_2 *x = (struct examp_2 *)y;
    y->a=2;
    y->b='t';
    int i;
    for(i=0;i<9;i++)
        y->c[i]=i+48;
    y->c[i] = '\0';
    printf("%d\n    %c\n     %s\n",y->a,y->b,y->c);
    printf("after:\n%d\n    %c\n   %s\n",x->a,x->b,x->c);
}
2018-03-10 16:28







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

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