
C语言指向结构体成员数据的指针的输出
#include<stdio.h>structsk{intn;floatx;}data,*p,*i;main(){data.n=166;data.x=28.76;p=(s...
#include<stdio.h>
struct sk
{
int n;
float x;
}data,*p,*i;
main()
{
data.n=166;
data.x=28.76;
p=(struct sk*)&data.n;
i=(struct sk*)&data.x;
printf("%d\n%g\n",data.n,data.x);
printf("%d\n%g\n",*p,*i);
}
这里,p指向的内容可以正确输出,i却不行,但我知道那里出了问题请人帮忙
附上输出结果。 展开
struct sk
{
int n;
float x;
}data,*p,*i;
main()
{
data.n=166;
data.x=28.76;
p=(struct sk*)&data.n;
i=(struct sk*)&data.x;
printf("%d\n%g\n",data.n,data.x);
printf("%d\n%g\n",*p,*i);
}
这里,p指向的内容可以正确输出,i却不行,但我知道那里出了问题请人帮忙
附上输出结果。 展开
2个回答
展开全部
p的使用方法错误。p是结构体指针,p=&data.a 把p指向了结构体成员,不可以。
应该这样
p = &data;
然后用p操作成员:
p->n或者p->a
应该这样
p = &data;
然后用p操作成员:
p->n或者p->a
追问
那为什么p的输出是正常准确的呢?
追答
那是因为n是结构中第一个成员,它的地址和结构体的地址是一样的。
2015-01-29
展开全部
float *p=&data.x;
int *q=&data.n;
这样试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询