2014-09-04 26 views
-2

accessing structure elements using structure variable array name 使用c语言中的结构变量数组来访问像指针这样的值,但是我不能?

正如我从指针知道数组名称充当指针。在这里,我将var,作为指针保存结构数组变量的起始地址,以访问类似于(var [0] .i和var [0] .a)的说明结构成员,但我无法访问它?

我想知道天气我错误地理解了与数组的指针关系的概念?

如果我错了,请给出一个清晰的解释。

+3

请张贴的代码,而不是一个屏幕截图。 – Brian 2014-09-04 19:00:38

+1

var是一个由3个元素组成的数组。尝试var [0] .i – DwB 2014-09-04 19:04:02

回答

0

尝试引用var->i而不是var.i.语法用于引用结构体的成员,->语法将一个指向结构体的指针解引用,然后引用它的成员。

0

正确的语法是

printf("%d\n", (*var).i); 
printf("%s\n", (*var).a); 
printf("%p\n", var); 

还是因为它是不清楚你想要什么与printf的最后一条语句,那么也许它可以写成

printf("%d\n", *(int *)var); 
1

输出试试这个

#include <stdio.h> 

int main(){ 
    struct acc { 
     int i; 
     char a[40]; 
    } var[3]={{20,"vinay"}, {21, "sagar"},{22,"reddy"}}; 
    printf("%d,%s,%p\n", var->i,var->a,(void*)var); 
    printf("%d,%s\n", (*var).i,(*var).a); 
    printf("%d,%s,%p\n", var[0].i,var[0].a,(void*)&var[0]); 
    return 0; 
} 
0

要从指向结构的指针引用结构成员变量,应该使用->运营商。

实施例:

struct NODE { 
    int data; 
    struct NODE *next; 
}a; 

a.data=10; 
a.next=NULL; 

struct NODE *head = a; 
printf("%d\n",head->data); 

由于变种是一个指针阵列,以打印正确的方法是:

printf("%d",var->i); //Will Print 20 
相关问题