请教各位大侠,c语言结构体嵌套的问题、。

有一组数据,v(电压),p(压力),H(最大值),L(最小值),
v和p的在同一结构体中的。h和l是v和p的各自属性。
typedef struct
{
float v;
float p;
}thing;
thing RTU;
现在,给v和p赋值就是RTU.v=123.456;RTU.p=34.56;
怎么嵌套结构体,才能用RTU.p.h=123.456。给h赋值,同时又能RTU.p=34.56;
先谢谢大家。

C语言实现不了你的想法。结构本身是没有值的,只有结构成员才有值。

typedef struct{
float H;
float L;
float actual;
}physic;

typedef struct{
physic v;
physic p;
}thing;
thing RTU;
RTU.v.H=123.456;
RTU.v.L=0;
RTU.v.actual=100;
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-12-15
怎么嵌套结构体,才能用RTU.p.h=123.456。给h赋值,同时又能RTU.p=34.56;
------------------------------------------------
至于如何嵌套结构体是很简单的:
typedef struct
{
float h ;
} pstruct ;
typedef struct
{
float v ;
pstruct p ;
}thing ;
thing rtu ;
rtu.p.h = 12.34 ;
这样就实现嵌套了。
但是你说的想同时保持rtu.p=34.56这种方式是不能共存的
给结构体赋值不能用直接赋值的。
第2个回答  2011-12-15
struct property {
float high;
float lower;
};
typedef struct {
struct property voltage;
struct property pressure;
}thing;
第3个回答  2011-12-15
typedef struct
{
float H;
float L;
} Extremum;

typedef struct
{
Extremum v;
Extremum p;
}thing;
thing RTU;
嵌套结构体,能用RTU.p.h=123.456。C实现不了RTU.p=34.56。
用C++或C#能实现。
第4个回答  2011-12-15
struct date
{
int h;
int v;
};
struct
{
float date v;
float date p;
}thing;
thing RTU;
建一个新的 struct date 就行了,,
第5个回答  2011-12-15
我觉得你的意思就是:
struct value
{
float h;
float l;
};

struct
{
float v;
value p;
}thing;
thing RTU;

这样就可以使用RTU.p.h和RTU.p.l了。

请教各位大侠,c语言结构体嵌套的问题、。
C语言实现不了你的想法。结构本身是没有值的,只有结构成员才有值。typedef struct{ float H;float L;float actual;}physic;typedef struct{ physic v;physic p;}thing;thing RTU;RTU.v.H=123.456;RTU.v.L=0;RTU.v.actual=100;

会c语言的来,麻烦各位大侠了。我怎么做都不对~~
(1)用于产生三位数中不包含0且是某个整数平方的三位数,且满足三位数的各个数字不重复。(片断)……int i,j,m,a[30],x,y,z;j=0;for(i=10,i<32,i++){m=i*i; x=m%10; y=m%100; z=m%1000;if(x!=y)&&(x!=z)&&(y!=z)&&(x*y*z!=0) \/*三位数的各个数字不为0...

C语言的几个判断题,求各位大侠帮助啊!
1. 工作变量, 临时变量, 没有本质差别吧?2. c语言没有布尔型 3. 空表达式, 其值为真 4. 在循环中, 正确, 但 break 可以用于 switch 5. 数组名本身就是地址型常量, 当然不能再加 &, & a [ 0 ] 这种情况下, 是 & (a [0]), 是对元素取地址, a[0] 不是数组名, 注意运算符...

C语言for循环嵌套求3到100素数
for(i=2;i<n;i++)if(n%i==0) break;\/\/第二个for循环到这里结束。if(i>=n) \/*判断第二个for循环i是否循环到了n-i,如果是的话就是素数,否则就是在2-(n-1)之间有能除尽的则不是素数*\/ printf("%d\\n",n);} 明白否?

各位大侠小弟遇到一题C语言小难题:程序已编译通过(用二进制方式读写文件...
要想在记事本得到你所希望的所谓无“乱码”的显示结果的话,也很简单,只需将程序中的写操作代码修改如下:if 0 if(fwrite(&Student[i],sizeof(struct Student_type),1,fp)!=1)printf("File write error!\\n");else fprintf( fp, "%s\\t%d\\t%d\\t%s\\n\\r",Student[i].name, Student...

C语言中结构体成员赋值给其他变量的问题
struct compx { float real;float imag;}XU[513];你多了个;号

各位C语言的大侠们,小弟又遇一道C语言小问题,这个函数是输出学生不及...
float *search(float(*pointer)[4]){ int i=0;float *pt;pt=NULL;for(i=0;i<4;i++)if(*(pointer+i)<60) pt=*pointer; \/\/这里的*(pointer+i)改为:*(*(pointer)+i)return (pt);}

C语言 谢谢各位大侠了!!!
D char s[]中不能使用*++s或*s++,因为s是数组名

关于C语言中">>"的问题
xx[i][j] += xx[i][j]>>4 等价于xx[i][j]=(xx[i][j]+(xx[i][j]>>4))而xx[i][j]=xx[i][j]+xx[i][j]>>4等价于xx[i][j]=((xx[i][j]+xx[i][j])>>4)

C语言中y=(b=2,3*2)怎么理解?谢谢各位大侠的帮助啊
1.大体来看,这个表达式分两层。最外层的赋值表达式以及括号内的逗号表达式。2.赋值表达式从右往左进行,同时括号的优先级高于赋值符号 = ,因此先计算括号内的逗号表达式。3.在C的所有操作符中,逗号操作符优先级最低,而逗号操作符又是双目操作符,结合性从左往右。因此先执行逗号左侧的赋值表达式b =...

相似回答