void Test(DATA_17 **pstr)
{
DATA_23 **pdata23 = (DATA_23 **)pstr;
printf("%p\n",*pstr);
++(*pstr);
++(*pdata23);
printf("%p\n",*pstr);
}
这两处打印出的指针应该相差多少,7还是3?
typedef struct DATA_17
{
BYTE by1;
BYTE by2;
BYTE by3;
} DATA_17;
typedef struct DATA_23
{
BYTE by1;
BYTE by2;
BYTE by3;
BYTE by4;
} DATA_23;
用sizeof(DATA_23)和DATA_17判断下。
不同的编译器不同的环境不同,不能猜。
GCC编译器!!!!
不同的编译选项都可能不同的。
只能说,以你调试得到的结果为准。
sizeof(DATA_17)=3,sizeof(DATA_23)=4,没有猜结果,是因为我打印出的不对,程序出错了,才来发帖的!!
“不同的编译选项都可能不同的”大哥可以具体说说吗,我试验了所有优化选项(01-0s),结果都一样