[c언어] 포인터와 구조체의 주소

C언어에서 포인터와 구조체를 함께 사용하면 메모리 주소를 다루는 데 유용한 기능을 수행할 수 있습니다. 포인터는 변수의 메모리 주소를 저장하고 접근하는 데 사용되며, 구조체는 서로 관련된 데이터를 묶어서 하나의 단위로 사용하는 데 유용합니다.

포인터의 정의와 활용

포인터는 다른 변수의 메모리 주소를 저장하는 변수입니다. 이를 통해 메모리에 직접 접근하여 값을 변경하거나 함수로부터 반환된 주소를 활용할 수 있습니다.

int main() {
    int num = 10;
    int *ptr;
    ptr = # // 포인터 ptr에 변수 num의 주소를 할당

    printf("변수 num의 값: %d\n", *ptr); // *ptr을 통해 num의 값을 출력

    return 0;
}

위 예시에서는 num 변수의 메모리 주소를 ptr에 할당한 후, ptr을 통해 num의 값을 출력하고 있습니다.

구조체의 정의와 포인터 활용

구조체는 서로 다른 데이터 타입을 가진 여러 변수를 묶어서 하나의 단위로 다루는 데 사용됩니다. 구조체 변수에 대한 포인터를 사용하면 메모리 사용을 최적화하고 효율적인 데이터 관리가 가능합니다.

struct Person {
    char name[50];
    int age;
};

int main() {
    struct Person person1;
    struct Person *ptr_person;

    ptr_person = &person1; // 포인터 ptr_person에 구조체 변수 person1의 주소를 할당

    strcpy(ptr_person->name, "홍길동"); // 포인터를 통해 구조체 변수의 멤버에 접근
    ptr_person->age = 30;

    printf("이름: %s, 나이: %d\n", ptr_person->name, ptr_person->age); // 구조체 변수의 멤버 값을 출력
    return 0;
}

위 코드에서는 구조체 Person과 해당 구조체 변수에 대한 포인터를 사용하여 구조체 멤버에 접근하고 값을 변경한 예시입니다.

포인터와 구조체를 함께 사용하면 메모리 주소를 활용하여 데이터를 효율적으로 관리할 수 있고, 다양한 기능을 수행할 수 있습니다.