|
5鱼币
#include <iostream>
using namespace std;
#define SIZE sizeof(char) + sizeof(short) + sizeof(int) + sizeof(double)
void main()
{
char a1, a2;
short b1, b2;
int c1, c2;
double d1, d2;
char array[SIZE];
a1='a';
b1=1;
c1=230;
d1=0.9;
array[0] = a1;
*(short*)(array + 1) = b1;
*(int*)(array + 3) = c1;
*(double*)(array + 7) = d1;
a2 = array[0];
b2 = *(short*)(array + 1);
c2 = *(int*)(array + 3);
d2 = *(double*)(array + 7);
std::cout << a2 << " " << b2 << " " << c2 << " " << d2 << std::endl;
system("pause");
}
复制代码
<
*(short*)(array + 1) = b1;
*(int*)(array + 3) = c1;
*(double*)(array + 7) = d1;
a2 = array[0];
b2 = *(short*)(array + 1);
c2 = *(int*)(array + 3);
d2 = *(double*)(array + 7);
>这一段指针的运用实在看不懂。请大神们指点指点小弟。。 |
最佳答案
查看完整内容
这个数组array类型是char型的,且长度是四种类型长度的和。按理说只能存放char型数据,所以array[0] = a1是没问题的,占用一个字节。
当要存放short类型数据时,必须就行强制转换。*(short*)(array + 1) = b1中(array + 1)指针指向第二个字符空间,(short*)(array + 1)强制转换成指向short类型数据的指针, *(short*)(array + 1)对指针进行解指针操作,将short类型数据b1赋值给 *(short*)(array + 1)。
接下来,*(int*)(array + ...
|