typedef struct 内存结构有关问题
typedef struct 内存结构问题请看如下定义:typedef struct{int *p1int *p2int *p3int *p4}DataType, *
typedef struct 内存结构问题
请看如下定义:
typedef struct
{
int *p1;
int *p2;
int *p3;
int *p4;
}DataType, *pDataType;
这种形式的数据,在内存中是不是像数组那样连续存放着?
那么下面这个数据结构(注意元素都是指针),也会是连续的吗?
typedef struct
{
int *p1;
short *p2;
char *p3;
double *p4;
}DataType, *pDataType;
请问,这种 typedef struct 的类型,是不是和数组一样的形式,在内存中进行组织存放?
不同的运行环境,是不是都是一致的?
谢谢!
[解决办法]
这里有2个误区。
首先0x0018ff14,这就是4个字节。
第二,pHead、pTail等是short类型的指针,他们所指向的内存空间占用的字节是2个,但是这个地址本身占用的是四个字节。楼主要比较的不是用&obj和pHead、pTail等比较,而是要用&obj和&(obj.pHead)、&(obj.pTail)等进行比较
[解决办法]37楼已经解释清楚了.
pHead后面显示的只是其值, 而不是其本身的指针. 要得到本向指针, 需要取地址.
不连续是因为给&obj是指向obj对象本身分配的地址, 而pHead是指向的另一个变量的地址, 你甚至可以给它赋值为NULL, 你想它还可能跟&obj连续吗?
也许你看看其反汇编代码, 可能会更容易理解些.