使用c语言中的结构变量数组来访问像指针这样的值,但是我不能?
正如我从指针知道数组名称充当指针。在这里,我将var,作为指针保存结构数组变量的起始地址,以访问类似于(var [0] .i和var [0] .a)的说明结构成员,但我无法访问它?
我想知道天气我错误地理解了与数组的指针关系的概念?
如果我错了,请给出一个清晰的解释。
使用c语言中的结构变量数组来访问像指针这样的值,但是我不能?
正如我从指针知道数组名称充当指针。在这里,我将var,作为指针保存结构数组变量的起始地址,以访问类似于(var [0] .i和var [0] .a)的说明结构成员,但我无法访问它?
我想知道天气我错误地理解了与数组的指针关系的概念?
如果我错了,请给出一个清晰的解释。
尝试引用var->i
而不是var.i
。 .
语法用于引用结构体的成员,->
语法将一个指向结构体的指针解引用,然后引用它的成员。
正确的语法是
printf("%d\n", (*var).i);
printf("%s\n", (*var).a);
printf("%p\n", var);
还是因为它是不清楚你想要什么与printf的最后一条语句,那么也许它可以写成
printf("%d\n", *(int *)var);
输出试试这个
#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;
}
要从指向结构的指针引用结构成员变量,应该使用->
运营商。
实施例:
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
请张贴的代码,而不是一个屏幕截图。 – Brian 2014-09-04 19:00:38
var是一个由3个元素组成的数组。尝试var [0] .i – DwB 2014-09-04 19:04:02