archive
[C언어 개념] 포인터 2 본문
- 포인터 배열
: 배열이 선언되면 컴파일러는 메모리에 기저주소와 모든 배열의 요소들이 포함될 수 있는 만큼의 연속적인 공간을 할당한다. *** 기저주소는 첫 번째 요소(인덱스 0)의 위치
ex) int x[5] = {1,2,3,4,5};
:위와 같은 배열의 기저주소가 1000이라고 하고, int 형의 크기가 2바이트라고 하면 , 1은 1000에, 2는 1002에, 3은 1004에, 4는 1006에, 5는 1008에 저장된다.
: 이름 x는 첫 번째 요소를 가리키는 상수 포인터로 정의가 된다. 따라서 x의 값은 첫 번째 원소 x[0]이 저장된 1000이 된다.
: 즉 x = &x[0] = 1000
: 만약 int형 포인터인 p를 정의하면, p가 배열x를 가리키게 할 수 있다.
ex) p = x
p = &x[0]
: p++을 이용하여 배열 x의 모든 원소에 하나씩 접근이 가능하다.
p = &x[0] (=1000)
p+1 = &x[1] (=1002)
p+2 = &x[2] (=1004)
p+3 = &x[3] (=1006)
p+4 = &x[4] (=1008)
<예제>
포인터 변수를 사용하여 배열의 모든 원소를 더하는 프로그램을 작성하라.
-
-2차원 배열에서의 포인터 변수
: 1차원 배열에서 *(x+i)와 *(p+i) 모두 x[i]이다. 이와 마찬가지로 2차원 배열의 원소는
:*(*(a+i)+j) 또는 *(*(p+i)+j)로 표현이 가능하다.
'C \ C++ > C 개념 정리' 카테고리의 다른 글
rand(), srand() 함수 개념 정리 (0) | 2023.03.21 |
---|---|
qsort() 함수 (0) | 2023.03.21 |
strtok() 함수 개념 (0) | 2023.03.21 |
[C언어 개념] 포인터 연산 규칙 정리 (0) | 2022.06.26 |
[C언어 개념] 포인터 1 (0) | 2022.06.26 |