#include <stdio.h>
#include <stdlib.h>
const double PAI = 3.14;
const double LOG_E = 2.718;
typedef struct _person_t {
char name[32];
int age;
} person_t;
int ga; // 초기화 하지 않은 전역 변수
int gb;
int gc = 11; // 초기화 한 전역 변수
int gd = 22;
int sx;
int sy = 999;
person_t p1; // 초기화 하지 않은 구조체 전역 변수
person_t p2 = { "david", 88 }; // 초기화 한 구조체 전역 변수
int sum(int a, int b) {
int lr = 0; // 지역 변수
lr = a + b;
return (lr);
}
int sub(int a, int b) {
return (a-b);
}
int main() {
int la=2;
int lb= 3;
sum(la, lb);
person_t* p3 = malloc(sizeof(person_t));
// 상수는 텍스트 세그먼트에 위치한다. 주소가 가장 낮아야 한다. ok
printf("상수의 메모리 주소 : %p\\r\\n", &PAI);
// double이므로 8바이트 뒤에 LOG_E가 나온다. ok
printf("상수의 메모리 주소 : %p\\r\\n", &LOG_E);
// 초기화 한 전역변수가 먼저 나오고,
// 이후에 초기화 하지 않은 전역변수가 다음에 나온다.
printf("초기화 하지 않은 전역 변수 주소 : %p\\r\\n", &ga);
printf("초기화 하지 않은 전역 변수 주소 : %p\\r\\n", &gb);
printf("초기화 한 전역 변수 주소 : %p\\r\\n", &gc);
printf("초기화 한 전역 변수 주소 : %p\\r\\n", &gd);
printf("정적 변수의 주소 : %p\\r\\n", &sx);
printf("정적 변수의 주소 : %p\\r\\n", &sy);
// 텍스트 세그먼트 영역에 위치한다.
printf("함수의 주소 : %p\\r\\n", &sum);
printf("함수의 주소 : %p\\r\\n", &sub);
printf("초기화 하지 않은 구조체 전역 변수: %p\\r\\n", &p1);
printf("초기화 한 구조체 전역 변수 : %p\\r\\n", &p2);
printf("지역 변수 주소 : %p\\r\\n", &la);
printf("지역 변수 주소 : %p\\r\\n", &lb);
printf("동적 할당 변수 주소 : %p\\r\\n", &p3);
return 0;
}
▼