// 자료구조란 자료를 효율적으로 접근 및 수정 하기 위해 자료의 조직, 관리, 저장하는 것을 뜻한다.
//// ----- 포인터 -----
//// 포인터 변수는 주소를 저장해주는 변수. 주소는 각 공간이 가지고 있는 고유한 값.
//// 포인터 변수 선언 방법 : 저장할 공간의 자료형*(에스타리스크) 변수명;
//// 포인터 변수 안에 저장된 주소로 접근해서 주소 안의 값을 확인할 때는
//// *포인터 변수 형식으로 확인할 수 있다. 이를 역참조라고 부른다. 선언할 때 사용하는 *는 역참조가 아니라, 인트 포인터라는 것을 알려주는 용도.
//// 포인터 변수는 일반 변수의 주소를 저장할 수 있고,
//// 이중 포인터 변수는 포인터 변수의 주소를 저장할 수 있고,
//// 삼중 포인터 변수는 이중 포인터 변수의 주소를 저장할 수 있고,
//// 사중 포인터 변수는 삼중 포인터 변수의 주소를 저장할 수 있다.
#include<stdio.h>
int main()
{
int num = 5; // int - 정수
// 저장할 공간의 자료형* 변수명;
int* ptr; // int* - int 자료형을 가진 공간의 주소 (즉 자료형은 인트 포인터)
int** dptr; // int 이중 포인터
int*** tptr; // int 삼중 포인터
ptr = # // &(앰퍼샌드)
dptr = &ptr;
tptr = &dptr;
printf("num의 주소 : %p\n", &num);
printf("ptr의 값 : %p\n", ptr);
printf("\nnum의 값 : %d\n", num);
printf("ptr을 이용한 num의 값 : %d\n", *ptr);
printf("dptr을 이용한 num의 값 : %d\n", **dptr); // 역참조 2회 진행
printf("tptr을 이용한 num의 값 : %d\n", ***tptr);
printf("\nptr의 주소 : %p\n", &ptr);
printf("dptr의 값 : %p\n", dptr);
printf("\ndptr의 주소 : %p\n", &dptr);
printf("tptr의 값 : %p\n", tptr);
return 0;
}
-----------------------------------------------------------------------------------------------------------------------
// 문제
// 정수형 변수를 선언하고 포인터 변수에 해당 변수의 주소를 저장 후, 포인터 변수를 통해 정수를 입력받으세요. (정수형 변수의 값은 0으로 초기화 한다.
// 입력 : 20
// 출력 : 20
#include<stdio.h>
int main()
{
int num = 0;
int* ptr;
ptr = #
scanf("%d", ptr);
printf("num의 값 : %d\n", num); // scanf("%d", 입력값을 저장할 공간의 주소(= num의 주소);
printf("ptr의 값 : %p\n", ptr);
}
'IT&코딩 > 자료구조' 카테고리의 다른 글
자료구조 - 6일차 (동적할당) (1) | 2022.09.19 |
---|---|
자료구조 - 5일차 (구조체) (0) | 2022.09.15 |
자료구조 - 4일차 (재귀함수) (0) | 2022.09.15 |
자료구조 - 3일차 (변수) (0) | 2022.09.12 |
자료구조 - 2일차 (함수) (0) | 2022.09.12 |