标题:关于结构体强制类型转换问题
只看楼主
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);
   
}
搜索更多相关主题的帖子: 强制 类型转换 include struct char 
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
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册: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



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




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

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