我正在尝试访问作为结构成员的指针的数据。
typedef struct
{
int i1;
int* pi1;
} S;
int main()
{
S s1 = { 5 , &(s1.i1) };
printf("%u\n%u\n" , s1.i1 , s1.pi1 ); //here is the problem
return 0;
}
问题在于printf的第二个参数。当我运行程序时,我在控制台中得到以下结果:5 ...(下一行)2381238723(每次都不同)。 这是正确的,结果并不出乎意料。我尝试过这样的事情:
*(s1.pi1)
和
s1.*pi1
它们都不起作用。 C或方法中是否有任何操作符可以执行此操作?
答案 0 :(得分:3)
我猜这里,但我认为你可能打算做以下事情:
typedef struct
{
int i1;
int* pi1;
} S;
int main()
{
// Take the address of s1.i1, not s1.pi1
S s1 = { 5 , &(s1.i1) };
// Dereference s1.pi1
printf("%u\n%u\n" , s1.i1 , *s1.pi1 );
return 0;
}
答案 1 :(得分:1)