[2주차] 포인터 개요 및 복습
반응형
2.포인터 개요 및 복습
포인터는 메모리에 변수가 저장된 주소를 가르키는 변수
포인터를 왜 쓰나
변수에 간접접근, 동적할당 등 고급 기능에 사용
주의사항
시스템 메모리의 앞부분에는 운영체제가 올라가 있어서 접근이 불가하다.(Permission 필요)
int* p = 8;
그러므로 위와 같은 코드로 메모리에 접근하면 오류가 난다.
포인터 배열
int arr = [1,2,3];
printf("%d", *arr);
배열을 대괄호없이 포인터로써 위와 같이 사용할 수 있다.
또한, 이 값에 정수 n을 더하면 변수의 n+1 번째 값의 주솟값이 된다.
포인터 배열 활용
printf("%d", *p);
p++;
뭔가 코드가 안 이쁘다.
printf("%d", *p++);
이런식으로 하면 코드가 섹시해진다.
그런데 가끔 아래처럼 짜는 유사 너드가 있다.
printf("%d", *(p)++);
이러면 값이 1 증가되고 포인터는 가만있으니까 이렇게 짜지 말자..
포인터로 클린 코딩하는 걸 자세히 보고 싶으면 포인터배열활용.c
을 보라.
포인터 인자와 배열 주소
배열은 항상 간접 접근(Call by reference)을 하기 때문에, 주의해야 한다.
아래 코드와 결과를 참고하시오.
void init(int ar[])
{
ar[0] = ar[1] = 0;
}
int main()
{
int ar[3] = {1,2,3};
init(ar);
printf("%d %d %d",ar,ar+1,ar+2);
}
>>> 0 0 3
포인터 배열
포인터를 아래와 같이 배열에 담을 수도 있다.
int* pi[5];
다중 포인터
int a = 3;
int *p = &a;
int **pofp = &p;
printf("%d", *pofp);
3
위와 같이 포인터 변수의 메모리 주소를 갖는 변수를 선언할 수 있다.
다차원 텐서나 고급 자료구조에서 활용할 수 있다.
반응형
'학부 수업 > C프로그래밍' 카테고리의 다른 글
[6주차] 연산자 함수, 자료형 심화 (0) | 2020.04.10 |
---|---|
[5주차] 동적 할당 (0) | 2020.04.10 |
[4주차] 구조체 (0) | 2020.04.10 |
[3주차] 문자열 (0) | 2020.04.10 |
세종대학교 고급 C 프로그래밍 강의노트 (2) | 2020.04.10 |
댓글
이 글 공유하기
다른 글
-
[5주차] 동적 할당
[5주차] 동적 할당
2020.04.10 -
[4주차] 구조체
[4주차] 구조체
2020.04.10 -
[3주차] 문자열
[3주차] 문자열
2020.04.10 -
세종대학교 고급 C 프로그래밍 강의노트
세종대학교 고급 C 프로그래밍 강의노트
2020.04.10