일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 8052 블랙라인 정사각 세면기
- 긍정
- 잡잡 NBR 요가매트 스탠다드 운동매트 10mm 퍼플
- 남쪽나무 세면대 세면대 세트 (스마트거울) 벽걸이세면대 이케아세면대 세면기
- list #pop #remove #del #append #insert #list형 #파이썬 파이썬 기본 문법 #파이썬 list
- ChatGPT
- [제이앤제나] 허리에 무리없는 신생아부터 역류방지쿠션_앨리펀블루 역류방지쿠션
- 23SS 스트라이프 오버핏 셔츠 723033 V2L30 9066
- 더블탭스 22SS 정글 01 셔츠 WTAPS JUNGLE 01 GREIGE M
- 러버메이드 벤티드 브루트(75L) 원형 컨테이너 리빙박스
- 굿아이템 양면오픈형 투명 접이식 리빙박스 폴딩박스 옷정리함 수납박스 펜트리수납함
- 삼성 갤럭시워치5
- 22FW 이바나 빈티지 체크 셔츠 더스트핑크 8054631
- 위드리빙 대용량 옷 수납 방수 바구니
- 봄봄 골드라인 4023G 탑볼세면대 화이트골드 카운타 도기볼 카페세면대
- 대림디움 대림바스플랜 PL-3070 탑카운터형 세면대/욕실/화장실/세면도기
- 톰브라운 명품톰브라운 23SS 더블페이스 니트 아우터형 포켓 셔츠 MJT291A 07545 415
- 미네 리빙다이닝 6인 원목 코너형 식탁세트(소파형)
- 네스파 다야몬드은박 후드티
- 오토비 AZ100TR 32G 전후방 FHD 2채널 트럭 화물차 전용 블랙박스 보증기간 2년 20m케이블 포함 후방 적외선 방수 AS 2년보장
- ipTIME 유무선공유기
- 올리비아 스텐 세면대 세트
- 두칸 프릴 오버핏 후드티
- 1개
- 샤오미 미밴드 7 스마트밴드
- 코멧 접이식 투명 리빙박스 56L 대형 2개입
- 리빙앤트리 펠리컨 박스 대
- 반스 올드스쿨 VN000D3HY28
- 22FW 로고 패치 포켓 체크 셔츠 2F000 03 M2359 F41
- 내셔널지오그래픽 피너스 빅로고 라운드넥 긴팔 티셔츠 카본 블랙
- Today
- Total
냥집사의 개발일지
C언어 - 포인터 배열(array of pointer) 본문
안녕하세요 오늘은 포인터 배열에 대해 정리해보겠습니다.
아래 목차 순으로 알아보아요~
1. 포인터 배열 선언
2. 포인터 배열 초기화
3. 포인터 배열과 2차원 배열
1. 포인터 배열 선언
아래 코드에서 알 수 있듯이 포인터 배열은 "배열 요소의 자료형 + 배열명 + 배열 연산자" 와 같이 선언할 수 있습니다.
예를 들면 char* parr1[5], int* parr2[3] 등
#include <stdio.h>
int main(){
char* parr[5];
parr[0] = "apple";
parr[1] = "bag";
parr[2] = "cat";
parr[3] = "dog";
parr[4] = "egg";
for(int i=0; i<5; i++){
printf("%s\n",parr[i]);
}
return 0;
}
parr 요소에는 각 문자열의 주소가 할당되고 문자열 출력 시 '\0' 문자까지 출력됨으로
parr 요소에 할당된 문자열들이 올바르게 출력되는 것을 확인할 수 있습니다.
2. 포인터 배열 초기화
2022.09.14 - [C언어] - C언어 - 다차원 배열(N dimensional array)
C언어 - 다차원 배열(N dimensional array)
안녕하세요 오늘은 C언어에서 다차원 배열의 선언 및 초기화에 대해 정리해보고자 합니다. 1. 2차원 정수형 배열의 선언 아래 코드는 2차원 정수형 배열을 선언하고 모든 배열의 요소를 1로 초기
leggo-fire.tistory.com
이전 포스팅에서 2차원 배열의 초기화 방법을 참고하시면 포인터 배열의 초기화를 쉽게 이해하실 수 있습니다.
포인터 배열의 초기화 역시 중괄호 안에 배열의 요소들을 저장하면 됩니다.
예를 들어 정수형 포인터 배열은 배열의 시작 주소를, 문자형 포인터 배열은 문자열의 시작 주소를 저장하면 됩니다.
Tips 2차원 문자형 배열의 초기화는 문자열 자체를 배열의 공간에 저장합니다.
#include <stdio.h>
int main(){
int arr1[2] = {1,1};
int arr2[2] = {2,2};
int arr3[2] = {3,3};
int* parr1[3] = {arr1,arr2,arr3};
char* parr2[5] = {"apple", "bag", "cat", "dog", "egg"};
return 0;
}
3. 포인터 배열과 2차원 배열
아래 코드는 포인터 배열을 배열 표현 & 포인터 표현 방법으로 출력하였습니다.
#include <stdio.h>
int main(){
int arr1[2] = {1,1};
int arr2[2] = {2,2};
int arr3[2] = {3,3};
int* parr1[3] = {arr1,arr2,arr3};
printf("print array fo pointer using 2 dimensional array printing way\n");
for(int i=0; i<3; i++){
for(int j=0; j<2; j++){
printf("%d ",parr1[i][j]);
}
printf("\n");
}
printf("print array fo pointer using pointer printing way\n");
for(int i=0; i<3; i++){
for(int j=0; j<2; j++){
printf("%d ",*(parr1[i]+j));
}
printf("\n");
}
return 0;
}
아래 결과에서도 알 수 있듯이 두 표현식은 같습니다.
쉽게 이해하도록 arr1[1]의 출력 과정을 살펴보며 이해해 보겠습니다.
배열 표현 :
parr1[0]은 arr1임으로 arr1의 시작 주소가 할당됩니다. parr1[0][1]은 arr1의 두 번째 요소 즉, arr1[1]을 가리키게 됩니다.
포인터 표현 :
parr1[0]은 arr1임으로 arr1의 시작 주소가 할당됩니다.
parr1[0] + 1는 주소 + 정수 연산은 정수를 인덱스와 같이 간주합니다.
즉, 1은 1 * (sizeof(int))와 같은 표현이 됩니다.
*(parr1[0] + (1 * sizeof(int)))는 결론적으로 parr1[0]는 arr1의 시작 주소, arr1의 시작 주소에서 4byte 뒤에 있는 주소를 가리키는 값 arr1[1]을 출력하게 됩니다.
오늘은 포인터 배열에 대해 정리해보았습니다.
1. 포인터 배열 선언
2. 포인터 배열 초기화
3. 포인터 배열과 2차원 배열
포인터 배열은 언제나 헷갈리는 부분인데요. 오늘 포스팅이 조금이라도 이해하시는데 도움이 되었으면 좋겠습니다.
좋은 하루 보내세요~~
'C언어' 카테고리의 다른 글
C언어 - 배열 포인터 (pointer to an array) (0) | 2022.09.17 |
---|---|
C언어 - 이중 포인터 (Pointer to Pointer) (0) | 2022.09.16 |
C언어 - 다차원 배열(N dimensional array) (0) | 2022.09.14 |
C언어 - 데이터 공유 (call by value, call by reference) (0) | 2022.09.13 |
C언어 - 변수의 종류 (0) | 2022.09.12 |