간단한 구조체 문제

bosub의 이미지

struct A a;

fuc1(){
struct A *a1;

fuc2(&a1);
printf("%d, %d\n",a1->n1, a1->n2);

}

fuc2(struct A a1){
a1->n1 = 1;
a1->n2 = 2;
}

위 소스 코드가 무슨 문제가 있을까요?

litdream의 이미지

a1 에 메모리가 할당되어있지 않군요.

삽질의 대마왕...

smileng의 이미지

bosub wrote:
struct A a;

fuc1(){
struct A *a1;

fuc2(&a1);
printf("%d, %d\n",a1->n1, a1->n2);

}

fuc2(struct A a1){
a1->n1 = 1;
a1->n2 = 2;
}

위 소스 코드가 무슨 문제가 있을까요?

이렇게 해야 원했던 답이 나오지 않을까요?
님이 원했던 방식을 생각해 본 결과..맞나??

typedef struct{
	int n1;
	int n2;
} A;

void func2(A *a1){
	a1->n1=1;
	a1->n2=2;
}

void func1(){
	A a1;  // 포인터 선언이 아닙니다.
	func2(&a1);
	printf("%d, %d\n", a1.n1,a1.n2);
}

또는

typedef struct{
	int n1;
	int n2;
} A;

void func2(A *a1){
	a1->n1=1;
    a1->n2=2;
}

void func1(){
	A *a1;
	a1=(A *)malloc(1*sizeof(A));
	func2(a1);
	printf("%d, %d\n", a1->n1,a1->n2);
	free(a1);
}

학교 숙제가 아니길....

//--------------------------------------
// Not a Programmer, but.....
// ~ EveryDay MiSo ~
//--------------------------------------