如何使用结构指针访问结构成员

时间:2015-09-24 07:48:16

标签: c structure

我有以下代码:

#include <stdio.h>
#include <stdlib.h>
#include<string.h>

struct tag
{
    int x;
};

int main()
{
    struct tag stvar;
    struct tag*stptr=&stvar;

    *(stptr).x=9;

    return 0;
}

我可以使用stptr->x但不能使用*(stptr).x。我正进入(状态 request for member 'x' in 'stptr', which is of pointer type 'tag*' (maybe you meant to use '->' ?) 我在哪里弄错了?如何使用struct指针访问成员?

2 个答案:

答案 0 :(得分:2)

变化:

*(stptr).x=9;

(*stptr).x=9;

第一个语句相当于*(stptr.x)=9;,因为后缀运算符的优先级高于一元运算符。当然最好使用专用的->运算符来编写此语句:

stptr->x=9;

答案 1 :(得分:1)

一般来说,访问结构变量可以通过两种方式消失

value.structure_variable; // using (.) operator

( address or pointer )-> structure_variable // using -> operator

正如ouah在答案中指出的那样

*(stptr).x=9;
另一方面,

是错误的作业

(* stptr)基本上是stptr对地址指针的值因此转换为一个值

(*stptr).x=9; 

是有效的,因为stptr本身就是指针

stptr->x = 9;

是无害的,安全的,最受欢迎的分配方式。