일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 리빙앤트리 펠리컨 박스 대
- ipTIME 유무선공유기
- 러버메이드 벤티드 브루트(75L) 원형 컨테이너 리빙박스
- 올리비아 스텐 세면대 세트
- [제이앤제나] 허리에 무리없는 신생아부터 역류방지쿠션_앨리펀블루 역류방지쿠션
- 더블탭스 22SS 정글 01 셔츠 WTAPS JUNGLE 01 GREIGE M
- 22FW 이바나 빈티지 체크 셔츠 더스트핑크 8054631
- list #pop #remove #del #append #insert #list형 #파이썬 파이썬 기본 문법 #파이썬 list
- 1개
- 내셔널지오그래픽 피너스 빅로고 라운드넥 긴팔 티셔츠 카본 블랙
- 굿아이템 양면오픈형 투명 접이식 리빙박스 폴딩박스 옷정리함 수납박스 펜트리수납함
- ChatGPT
- 코멧 접이식 투명 리빙박스 56L 대형 2개입
- 위드리빙 대용량 옷 수납 방수 바구니
- 미네 리빙다이닝 6인 원목 코너형 식탁세트(소파형)
- 오토비 AZ100TR 32G 전후방 FHD 2채널 트럭 화물차 전용 블랙박스 보증기간 2년 20m케이블 포함 후방 적외선 방수 AS 2년보장
- 대림디움 대림바스플랜 PL-3070 탑카운터형 세면대/욕실/화장실/세면도기
- 샤오미 미밴드 7 스마트밴드
- 봄봄 골드라인 4023G 탑볼세면대 화이트골드 카운타 도기볼 카페세면대
- 남쪽나무 세면대 세면대 세트 (스마트거울) 벽걸이세면대 이케아세면대 세면기
- 22FW 로고 패치 포켓 체크 셔츠 2F000 03 M2359 F41
- 23SS 스트라이프 오버핏 셔츠 723033 V2L30 9066
- 반스 올드스쿨 VN000D3HY28
- 긍정
- 잡잡 NBR 요가매트 스탠다드 운동매트 10mm 퍼플
- 두칸 프릴 오버핏 후드티
- 네스파 다야몬드은박 후드티
- 톰브라운 명품톰브라운 23SS 더블페이스 니트 아우터형 포켓 셔츠 MJT291A 07545 415
- 삼성 갤럭시워치5
- 8052 블랙라인 정사각 세면기
- Today
- Total
냥집사의 개발일지
C언어 - 배열 & 포인터 (array & pointer) 본문
안녕하세요 오늘은 배열과 포인터의 관계에 대해 알아보겠습니다.
아래 목차 순서대로 정리해볼게요~

1. 배열명으로 배열 요소를 사용하는 방법
2. 포인터를 배열명 처럼 사용하는 방법
1. 배열명으로 배열 요소를 사용하는 방법
먼저 알아야할 것은 배열명은 배열의 첫 번째 요소의 주소입니다.
#include <stdio.h>
int main(){
int arr[3] = {1,2,3};
printf("arr[0]'s address : %u\n", &arr[0]);
printf("arr's address : %u\n",arr);
return 0;
}
&arr[0] (arr배열의 첫 번째 요소의 주소 값)이 arr와 같은 것을 확인할 수 있었습니다.
이 말은 배열명이 첫 번째 요소의 주소 값과 같다는 것임을 알 수 있습니다.

자, 배열명이 배열의 첫 번째 요소의 주소임을 알았으므로 배열명으로 배열 요소를 접근해보겠습니다.
아래 코드는 배열명에 정수 연산을 통해 배열 요소를 사용해보는 예제입니다.
배열명을 통해 arr의 각 요소들에 새로운 값을 할당했습니다.
#include <stdio.h>
int main(){
int arr[3] = {1,2,3};
*(arr + 0) = 4;
*(arr + 1) = 5;
*(arr + 2) = *(arr + 0) + *(arr + 1);
printf("arr + 0 = %u\n", arr + 0 );
printf("arr + 1 = %u\n", arr + 1 );
printf("arr + 2 = %u\n\n", arr + 2 );
printf("arr[0]'s address : %u\n", &arr[0]);
printf("arr[1]'s address : %u\n", &arr[1]);
printf("arr[2]'s address : %u\n\n", &arr[2]);
printf("arr[0]'s value : %d\n", arr[0]);
printf("arr[1]'s value : %d\n", arr[1]);
printf("arr[2]'s value : %d\n", arr[2]);
return 0;
}
*(배열명 + 정수) = *(각 배열의 주소) = 배열명[인덱스]
(중요!!) 이때 배열명 즉 주소 값과 정수의 연산은 일반 정수와 정수 연산과 다릅니다.
아래 결과값에서 알 수 있듯이 arr+0 = 52, arr+1 = 56 arr+2 = 60입니다.
주소값과 연산되는 정수는 일반 정수라기보다 배열의 인덱스라고 생각하시면 됩니다.

2. 포인터를 배열명 처럼 사용하는 방법
parr 포인터가 arr 즉, arr 배열의 첫 번째 요소의 주소를 가리키게 하면
포인터를 통해서도 배열의 요소에 접근할 수 있겠죠?
#include <stdio.h>
int main(){
int arr[3] = {1,2,3};
int *parr = arr;
*parr = 4;
*(parr + 1) = 5;
parr[2] = parr[0] + parr[1];
printf("arr[0]'s value : %d\n", arr[0]);
printf("arr[1]'s value : %d\n", arr[1]);
printf("arr[2]'s value : %d\n\n", arr[2]);
printf("*(arr + 0) = %d\n", *(arr + 0));
printf("*(arr + 1) = %d\n", *(arr + 1));
printf("*(arr + 2) = %d\n\n", *(arr + 2));
printf("*(parr + 0) = %d\n", *(parr + 0));
printf("*(parr + 1) = %d\n", *(parr + 1));
printf("*(parr + 2) = %d\n\n", *(parr + 2));
printf("parr[0]'s value : %u\n", parr[0]);
printf("parr[1]'s value : %u\n", parr[1]);
printf("parr[2]'s value : %u\n\n", parr[2]);
return 0;
}
arr[0] = *(arr + 0) = *(parr + 0) = parr[0]
arr[0] : arr배열의 첫 번째 요소 값
*(arr + 0) : arr(배열의 주소 값) + 0 이 가리키는 값 -> arr배열의 첫 번째 요소 값
*(parr + 0) : parr은 arr와 같은 값 -> *(parr + 0)는arr의 첫 번째 요소 값
parr[0] : parr를 배열명(arr)처럼 사용 -> arr배열의 첫 번째 요소 값

오늘은 배열과 포인터의 관계에 대해 정리해봤습니다.
1. 배열명으로 배열 요소를 사용하는 방법
2. 포인터를 배열명 처럼 사용하는 방법
다음 포스팅으로는 변수의 종류 및 데이터 공유에 대해 알아보겠습니다.
감사합니다.
좋은 하루 보내세요~
'C언어' 카테고리의 다른 글
C언어 - 데이터 공유 (call by value, call by reference) (0) | 2022.09.13 |
---|---|
C언어 - 변수의 종류 (0) | 2022.09.12 |
C언어 - 포인터 (Pointer) : 포인터를 사용하는 이유 (1) (0) | 2022.09.10 |
C언어 - 포인터 (Pointer) : 포인터 & 주소 (0) | 2022.09.09 |
C언어 - 포인터 (Pointer) : 기본 개념 (0) | 2022.09.07 |