关于指针下标问题,跪求高手
struct simple{
int a;
int b;
int c;
};
struct complicate
{
int d;
int e;
int f;
int g:
char f;
};
struct simple *mylove;
struct complicate *this;
this = (struct complicate *)(&mylove); /*怎么理解*/
指针的下标移动一位??表示????
跪求高手?? 结构体指针强制转换啊。
数组下标跟指针下标类试,这样写只是个人习惯,
我认为就是mylove指针后的的一个struct simple类型指针强制转换成struct complicate类型并赋给this。 回复【1楼】lalapunk1983
-----------------------------------------------------------------------
楼上说的,不对啊,怎么会struct simple类型指针强制转换成struct complicate,强制转换的是指针。。。 struct simple类型指针强制转换成struct complicate类型(指针)
不要扣语法啊。我语文底子差。
括号的字一定要加上才懂吗? 可能有一个simple和一个complicate刚好是连续存储的,这样做可以通过指向simple的指针来定位指向complicate的指针 回复【4楼】usingavr
-----------------------------------------------------------------------
这个介绍有点感觉了,估计程序就希望两个结构体在内存中是连续储存的。complicate紧跟simple的后面。 回复【3楼】lalapunk1983
-----------------------------------------------------------------------
(&mylove)关键是这个啊, lalapunk1983能否解释的易懂点。 &mylove 相当于指向 mylove + sizeof(simple),指向mylove之后 就是把mylove所指处的一个simple所占的空间之后的地址强制赋给为complicate的指针嘛。
执行完了之后complicate的指针就指向紧接着这个simple之后的那个位置。 typedef struct simple
{
int a;
int b;
int c;
}SIMPLE;
typedef struct complicate
{
int d;
int e;
int f;
int g:
char f;
}COMPLICATE;
COMPLICATE *this;
SIMPLE mylove;
this = (struct complicate *)(&mylove);
这样应该明白了吧,如果他没定义mylove数组的话编译会不会报错我就不清楚了。
自己可以随便写点数据然后软仿下看看情况就知道了。 struct simple
{
int a;
int b;
int c;
};
struct complicate
{
int d;
int e;
int f;
int g:
char f;
};
struct simple *mylove;
struct complicate *this;
this = (struct complicate *)(&mylove);
我的理解 应该是指向simple数组 int b;开始的地址 回复【10楼】zjwznlz 泥鳅
-----------------------------------------------------------------------
老兄,你说this指向向simple数组 int b;开始的地址
我看明显不对嘛,, 9楼说的对 this 将指向 mylove的起始地址
页:
[1]