본문 바로가기

IT&코딩/자료구조

자료구조 - 1일차 (포인터)

728x90
반응형

//  자료구조란 자료를 효율적으로 접근 및 수정 하기 위해 자료의 조직, 관리, 저장하는 것을 뜻한다.

 

//// ----- 포인터 -----
//// 포인터 변수는 주소를 저장해주는 변수. 주소는 각 공간이 가지고 있는 고유한 값.
//// 포인터 변수 선언 방법 : 저장할 공간의 자료형*(에스타리스크) 변수명;
//// 포인터 변수 안에 저장된 주소로 접근해서 주소 안의 값을 확인할 때는 
//// *포인터 변수 형식으로 확인할 수 있다. 이를 역참조라고 부른다. 선언할 때 사용하는 *는 역참조가 아니라, 인트 포인터라는 것을 알려주는 용도.
//// 포인터 변수는 일반 변수의 주소를 저장할 수 있고, 
//// 이중 포인터 변수는 포인터 변수의 주소를 저장할 수 있고,
//// 삼중 포인터 변수는 이중 포인터 변수의 주소를 저장할 수 있고,
//// 사중 포인터 변수는 삼중 포인터 변수의 주소를 저장할 수 있다.

 

#include<stdio.h>
int main()
{
int num = 5; // int - 정수
// 저장할 공간의 자료형* 변수명;
int* ptr; // int* - int 자료형을 가진 공간의 주소 (즉 자료형은 인트 포인터)
int** dptr; // int 이중 포인터
int*** tptr; // int 삼중 포인터

ptr = &num; // &(앰퍼샌드)
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 = &num;

scanf("%d", ptr);
printf("num의 값 : %d\n", num); // scanf("%d", 입력값을 저장할 공간의 주소(= num의 주소); 
printf("ptr의 값 : %p\n", ptr);
}

 

728x90
반응형

'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