✅ 목표 (Goal)

✅ 목차 (Index)

#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;
}

✅ 참조 (Ref.)