구조체에 대한 포인터의 할당에서 오류가 무엇인지 지적 해주세요.이 경우 구조체 변수에 포인터를 올바르게 할당하는 방법은 무엇입니까?
간략한 배경 - 나는 분수라는 구조를 가지고 있는데, 분수 형의 두 변수 (f1 & f2)가 있습니다. 또한 num이라는 구조체가 있습니다. 내가 struct 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;
이가 포인트 변수 x의 주소에 y 포인터.
그런 다음 동일한 논리에 따라 위의 코드가 작동하지 않는 이유는 무엇입니까? 나는 나의 방법을 온라인으로 확인하려고 노력했다. 그리고이 eskimo.com 기사에서, 그것은 거의 같은 것을 말한다. 다음과 같은 오류가 발생합니다.
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