hrming
[정보처리기사] C언어 포인터 본문
■ C언어 포인터 선언 ( '&' 와 '*' 차이 )
구분 | 설명 |
* | `포인터를 선언`하거나 `해당 포인터가 가리키는 원래 값`을 가져온다는 의미 |
& | `변수가 가리키던 주소`를 가져온다는 의미 |
* 포인터는 모든 자료형에 선언할 수 있음 |
#include <stdio.h>
int main(){
int a = 3; // 일반적인 int형 변수
int *b = &a; // a의 주소를 가리키는 포인터
printf("a의 값 = %d\n", a);
// 3
printf("b의 값 = %p\n", b);
// 포인터는 %p로 포맷팅
// 주소값~~~~~
}
■ C언어 포인터 저장 값 접근 ( * 이용 )
- 해당 포인터가 가리키는 값을 구하고 싶을 땐, 포인터 변수 앞에 ' * ' 를 붙여서 가져올 수 있다.
#include <stdio.h>
int main(){
int a = 3; // 일반적인 int형 변수
double ad = 3.0; // 일반적인 double형 변수
int *b = &a; // a의 주소를 가리키는 포인터
double *bd = &ad; // bd의 주소를 가리키는 포인터
printf("b가 가리키는 값 = %d\n", *b);
// *를 앞에 붙여서, 포인터가 가리키는 원래 값 가져오기
// 3
printf("b의 값 = %p\n", b);
// 포인터는 %p로 포맷팅
// 주소값~~~~~
printf("bd가 가리키는 값 = %.1f\n", *bd);
// *를 앞에 붙여서, 포인터가 가리키는 원래 값 가져오기
// 3.0
printf("bd의 값 = %p\n", bd);
// 포인터는 %p로 포맷팅
// 주소값~~~~~
}
■ C언어 이중포인터 선언 & 예시
- 포인터를 지목하고 있는 포인터 🌟
- 이중 포인터의 선언은 *를 두개 붙여서 **로 선언
#include <stdio.h>
int main(){
int a = 3;
int* b = &a;
int** c = &b; // ★포인터 변수를 가리키는 변수★
printf("a에 저장된 값 = %d\n", a); // 3
printf("b에 저장된 값 = %p\n", b); // 주소값~~~~
printf("c에 저장된 값 = %p\n", c); // 주소값~~~~
printf("b가 가리키는 값 = %d\n", *b); // 3
printf("c가 가리키는 값 = %p\n", *c);
// c는 b를 가리키는 이중 포인터
// *c는 b의 값, 즉 a의 주소를 의미 // 주소값~~~~
printf("c가 최종적으로 가리키는 값 = %d\n", **c);
// 3
}
참고 및 출처 :
https://jimmy-ai.tistory.com/54
[C언어] 포인터, 이중포인터 개념, 실습 예제 완벽 이해
안녕하세요. 이번 글에서는 많은 C언어를 공부하시는 분들을 애먹이는 개념이지만, 컴퓨터 구조의 기초, 메모리 할당과 밀접한 연관이 되어있으며, 이후에 다룰 매우 중요한 개념인 배열의 근간
jimmy-ai.tistory.com
https://www.youtube.com/watch?v=k6HPjMyVJy0
'기타 > 정보처리기사' 카테고리의 다른 글
[정보처리기사] Java 업캐스팅 문제 (0) | 2024.10.14 |
---|---|
[정보처리기사] 포인터 연산 (0) | 2024.09.30 |
[정보처리기사] C언어 구조체 (2) | 2024.09.29 |
[정보처리기사] 2024년 2회차 필기 합격 (0) | 2024.05.28 |
[정보처리기사] 데이터베이스 구축 - 병행제어 (0) | 2024.05.19 |
Comments