-
포인터
[학습내용] [학습목표] ▪ 포인터 이해
▪ 포인터 이용▪ 포인터의 개념에 대해 설명할 수 있다.
▪ 포인터 변수를 이용하여 데이터 변수값을 참조할 수 있다.포인터 이해
1. 포인터 개념
포인터 특정 위치를 가리키는 주소 정보
포인터 변수 포인터(주소)를 저장하는 변수
▪ 포인터 변수의 크기(주소의 크기)는 일반적으로 4바이트이지만 시스템에 따라 다름
▪ 포인터 변수의 역할은 다른 변수를 가리키는 변수
2. 포인터 변수
▪ 포인터 변수의 데이터 타입은 포인팅하는 변수의 데이터 타입과 동일한 타입으로 선언
char* int* double* char형 변수의
주소 저장int형 변수의
주소 저장double형 변수의
주소저장sizeof() 연산자 int sizeof(int) : 매개변수에 기술한 공간의 크기를 정수값으로 반환함
int a; char b; double c; int *pa; char *pb; double *pc; sizeof(a); sizeof(b); sizeof( c ); sizeof(pa); sizeof(pb); sizeof(pc);
3. 포인터 초기화
▪ & 주소 구하기 연산자
▪ & 데이터 변수 변수의 주소를 의미
▪ * 포인터 변수 포인터 변수가 가리키는 주소의 값
포인터 이용
1. 포인터 다루기
#include <stdio.h> int main() { int a=9; int *pa = &a; printf(“변수 a의 값은 %d 이고 a의 주소는 %p 이다.”, a, &a); printf(“포인터 변수 pa의 값은 %p 이고 pa가 가리키는 곳의 값은 %d 이다”, pa,*pa ); return 0; }
#include <stdio.h> int main() { int a=9; int *pa = &a; printf(“변수 a의 값은 %d 이고 a의 주소는 %p 이다.”, a, &a); printf(“포인터 변수 pa의 값은 %p 이고 pa가 가리키는 곳의 값은 %d 이다”, pa,*pa ); *pa = 12; printf( “a=%d”, a); return 0; }
#include <stdio.h> int main() { int a,b=4; char ch=‘k’ ; char *pch=&ch; int *pa = &a; *pa=7; printf(“a=%d *pa = %d \n”, a, *pa); printf(“ch=%c *pch = %c \n”, ch, *pch); pa = &b; printf(“b=%d \n”, b); *pa = 15; printf(“b=%d \n”, b); return 0; }
2. 이중 포인터
▪ 포인터 변수의 주소를 저장하는 포인터 변수
int x; int *p = &x; Int **pp = &p; //pp는 이중 포인터
▪ 이중 포인터가 가리키는 포인터를 이용해서 변수에 접근하려면 **처럼 두 번 간접 참조를 해야 함
**pp = 10; //*pp는 p가 되므로, 다시 p가 가리키는 x에 접근하려면 *가 하나 더 필요
3. 포인터 오류
• 포인터도 변수이므로 반드시 초기화 해야 함
• 포인터 변수를 초기화하지 않고 사용하면 실행 에러가 발생함
int *p; //p는 초기화되지 않았으므로 쓰레기 값을 가짐 *p = 10; //실행 에러가 발생함
• 널포인터 : 포인터가다른변수를가리키지않을때는NULL(0)로초기화함
int *p = NULL; //p를 널 포인터로 초기화함 p는 아직 다른 변수를 가리키지 않음
• 포인터를 안전하게 사용하려면 우선 포인터가 널포인터 인지를 검사
if( p ! = NULL ) //p가 널 포인터가 아닌지 확인 후에 사용 *p = 10; if( p ) //p가 널 포인터가 아닌지 확인 *p = 10;
• 포인터 변수의 데이터형이 반드시 포인터 변수가 가리키는 변수의 데이터형과 일치해야 함
short a; int *p = &a; //컴파일 경고가 발생 *p = 10; //컴파일경고를무시하고실행하면, 실행에러가발생
학습정리
1. 포인터 이해
▪ 포인터 : 다른 변수의 주소를 저장하는 변수
▪ 포인터의 선언 : 데이터형*변수명이 필요함 예) int * p;
▪ 포인터의 사용 : 변수의 주소를 구할 때는 주소 구하기 연산자 &를 이용하고, 포인터가 가리키는 변수에 접근할 때는
간접 참조 연산자 *를 이용함 예) int *p = &x; *p = 10;
2. 포인터 이용
▪ 포인터 사용 시 주의사항
- 포인터 변수는 포인터가 가리키는 변수의 데이터형과 일치하도록 선언해야 함
- 잘못된 포인터를 사용하는 것은 위험하므로, 포인터가 가리키는 변수가 없을 때는 NULL을 저장함
'Blog > JAVA기반 스마트웹 개발2021' 카테고리의 다른 글
프로그래밍 언어 활용 part 1 - 포인터와 문자열 (0) 2021.07.31 프로그래밍 언어 활용 part 1 - 포인터 활용 (0) 2021.07.29 프로그래밍 언어 활용 part 1 - 문자열 (0) 2021.07.28 프로그래밍 언어 활용 part 1 - 배열 (0) 2021.07.28 프로그래밍 언어 활용 part 1 - 변수의 스코프 (0) 2021.07.26 댓글