2011-02-28 81 views
0
#include<stdio.h> 
#include<stdlib.h> 
struct test 
{ 
    int x; 
    int *y; 
}; 

main() 
{ 
    struct test *a; 
    a = malloc(sizeof(struct test)); 

    a->x =10; 
    a->y = 12; 
    printf("%d %d", a->x,a->y); 
} 

我得到的O/P,但有一个警告输入数据以构造部件是指针

warning: assignment makes pointer from integer without a cast 

warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘int *’ 

如何输入一个值到* Y结构测试

+1

道格的答案是100%正确的。不过,我认为你真正需要的是阅读指针,我不认为特别解决这个情况会对你有所帮助。有很好的教程,你可以谷歌。 – slezica

回答

6

要访问,您需要解除引用由表达式返回的指针a-> y操纵指向的价值。要做到这一点,使用一元*运算符:

您还需要分配内存为y以确保它指向的东西:

a->y = malloc(sizeof(int)); 
... 
*(a->y) = 12; 
... 
printf("%d %d", a->x,*(a->y)); 

而且一定以相反的顺序来释放malloc分配数据它是malloc'd

free(a->y); 
free(a);