포인터 배열
배열의 요소가 포인터(메모리주소)로 이루어진 것
일반 배열
char a[3] = {'a', 'b', 'c'};
printf("%s\n", a); // %s는 문자열을 출력하므로 abc 출력
char *str = "Hello";
printf("%s\n", str); // Hello 출력
포인터 배열
char *student[3] = {"aaa", "bbb", "ccc"}; // 포인터를 배열로 만들면 주소값이 들어감
#include <stdio.h>
int main(){
static char *c[] = {"aaa", "bbb", "ccc"};
printf("%s", *(c+1)); // 100+1 = 101 의 주소값이므로 bbb가 출력됨
}
#include<stdio.h>
int main(){
char *array1[2] = {"Good morning", "C language"};
printf("%s\n", array1[0]+5); // 첫번째 포인터 배열의 5번째 값부터 null을 만날때까지의 문자열 morning 출력
printf("%c\n", *(array1[1]+6)); // 두번째 포인터 배열의 6번째 값이 가리키는 값 u 출력
}
void main(){
int a[2][3] = {{-3, 14, 5}, {1, -10, 8}};
int *b[] = {a[0], a[1]};
int *p = b[1];
printf("%d", *b[1]); // 포인터 배열 b의 1 이 가리키는 값이므로 1
printf("%d", *(++p)); // 103+1=104 가 가리키는 값이므로 -10
printf("%d", *(--p-2)); // 104-1-2=101 이 가리키는 값이므로 14
}
#include<stdio.h>
int main(){
int *arr[3];
int a = 12, b = 24, c = 36;
arr[0] = &a; // &는 주소값이므로 a의 주소값
arr[1] = &b;
arr[2] = &c;
printf("%d\n", *arr[1] + **arr + 1); // 24 + 12 + 1 = 37
}
'C' 카테고리의 다른 글
배열 포인터 (0) | 2023.04.05 |
---|---|
구조체, 포인터 이동 (0) | 2023.04.05 |
1차원, 2차원 배열과 포인터 (0) | 2023.04.03 |
배열, 포인터, scanf (0) | 2023.03.28 |
for, 다중 for 문, continue, break (0) | 2023.03.14 |