C语言结构指针

如有struct one{略};struct two{略};int main{struct one boy,*p;struct two girl;是否结构变量只能赋值给同类型的结构指针?p=&boy;下面这句是否错?p=&girl,如果结构指针作为实参传递,什么能接收这结构指针}
后面那个我指的是,作为实参传到已定义的函数,函数的形参可以是哪些类型,第一个问到底能不能赋值?

p的类型是struct one *
&body的类型也是struct one *
但是&girl的类型事struct two *

当然你可以p = (struct one *)&girl,但事后续问题就是另外一回事了

实参那部分不知道你在说什么....

----

传实参等价于给形参赋值,可以用相同的逻辑理解。

第一个问题的核心就是被赋值的类型必须能包含赋值类型,C里不存在结构体继承关系(不考虑void *的话),所以结构体指针必须相同才能赋值(void *可以被任何指针类型赋值)。p = (struct one *)&girl 这个要说的是,指针的类型可以任意强制转换。具体的意义这里也跟你说不清楚,自己好好看看书。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-02-06
一:结构变量只能赋值给同类型的结构指针
二:你的赋值没有错
三:除了共用体,其他都可以做参数
相似回答
大家正在搜