#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
undefined behavior 때문에 이상한 결과가 나오는 것임. 내 환경에서는 AGE : 1 // Gender : 71506928 AGE : 10 // Gender : 1 라고 나옴.
감사합니다 현제 replit에서 코딩해보고 있는데 제가 생각한 대로 값이 안나와서 당황했는데 덕분에 궁금증이 해결됐습니다. 즐거운 주말 보내세요!!