struct A{
int a;
char b;
float c;
}
struct B{
int a;
}
相应的初始化后,如果把指向结构体B的指针变量赋值给指向结构体A的指针变量,是不是相当于把结构体A的第一个成员替换成了结构体B的,而剩余成员保持不变
错
你地址都变了,想下面的不变?
A a ;B b;
假如你定义了两个变量。那么假如,a 的内存存的分别的 4 、a、1.0,b的内存放的是3
注意b 后面的内存可能被其他人用,或者没有用,
一旦,a = b,那么a 的地址就跑到了b,a 看到的第一个是b 的3,没错,但是后面就一切都是未知
不是,对指针的赋值只会改变指针的指向,按照你的操作,相当于原本指向结构体A的指针指向了结构体B
不是,结构体B看作是一种数据类型,结构体A是另一种数据类型,两种不同的数据类型的指针不能直接直接赋值。可以通过强制类型转换将指针值改变,但不能改变结构体的成员结构,结构体成员结构是固定的,一旦定义了就不能被改变。
第一: 结构体之间的赋值,其实是给结构体内部的每个成员依次赋值,你应该实际取对象给其对应的成员一个个得赋值。
第二:有关结构体指针,指针相关得概念(实际指向的是一块地址),你可以自己学,但是结构体这有一个知识点,你看你结构体B的结构和结构体A的前面是一样的,所以可以把结构体A对应的指针,强转按照结构体b进行取值,取第一个int没问题,但是反之不行。