#include <stdio.h>


struct TEST {

int age;

int gender;

};


int set_human1(struct TEST a, int age, int gender) {

a.age = age;

a.gender = gender;

return 0;

}


int set_human2(struct TEST *a, int age, int gender) {

a->age = age;

a->gender = gender;

return 0;

}


int main() {

struct TEST human;


set_human1(human, 10, 1);

printf("AGE : %d // Gender : %d \n", human.age, human.gender);


set_human2(&human, 10, 1);

printf("AGE : %d // Gender : %d ", human.age, human.gender);


return 0;

}


이 코드를 실행해 봤는데
AGE : 10 // Gender : 1 
AGE : 10 // Gender : 1
이런 식으로 값이 나오더라구요

AGE : 쓰레기값 // Gender : 1 
AGE : 10 // Gender : 1
이렇게 나와야 맞는거 아닌가요?

C언어는 절차지향으로 알고 있는데 위에서 부터 코드가 실행된거면


AGE : 쓰레기값 // Gender : 1 

AGE : 10 // Gender : 1

이렇게 나오는게 맞는거 같은데 궁금해서 질문드려봅니다

연령 : 10 // 성별 : 1