有人可以指出这个指向结构的指针的错误是什么?如何在这种情况下正确地分配一个指向结构变量的指针?
简要背景 - 我有一个称为分数的结构,我有两个类型分数的变量(f1 & f2)。我也有一个名为num的结构数组。直到我试图创建一个类型为struct fraction的指针并将它分配给f1的地址时,它一直运行良好。
#include <stdio.h>
struct fraction
{
int nume;
int deno;
};
struct fraction *fp;
struct fraction f1,f2;
struct fraction num[3];
fp=&f1;
int main()
{
f1.nume=22;
f1.deno=7;
int i,x=5,y=6;
f2=f1;
printf("\n Fraction 1 numerator is: %d\n", f1.nume);
printf("\n Fraction 1 denominator is: %d\n", f1.deno);
printf("\n Fraction 2 numerator is: %d\n", f2.nume);
printf("\n Fraction 2 denominator is: %d\n", f2.deno);
//initialize array of structs
for(i=0;i<3;i++)
{
num[i].nume=x;
num[i].deno=y;
++x;
++y;
}
//print out array of structs
for(i=0;i<3;i++)
{
printf("\n Numerator of fraction num %d : %d", i, num[i].nume);
printf("\n Denominator of fraction num %d : %d\n", i, num[i].deno);
}
//try to use pointer to access field
printf("\n Numerator of fraction f1 : %d\n", fp->nume);
printf("\n");
}
我想指针能分到以下为int指针赋值的一般规则的结构类型的变量,漂浮等。对于实例 - 你可以这样做:
int x=10;
int *y;
y=&x;
这点的指针y指向变量x的地址。
然后,遵循相同的逻辑,为什么上面的代码不起作用?我尝试在线验证我的方法,从这篇文章中可以看出,它几乎是一样的。这里是我得到的错误:
struct1.c:21:1: warning: type specifier missing, defaults to 'int'
[-Wimplicit-int]
fp=&f1;
^~
struct1.c:21:1: error: redefinition of 'fp' with a different type: 'int' vs
'struct fraction *'
struct1.c:17:18: note: previous definition is here
struct fraction *fp;
^
非常感谢您的帮助!
这样的表达('FP = &f1;')不能写在函数之外。 – BLUEPIXY 2014-11-03 10:47:13