C

포인터 배열

김꼬알 2023. 4. 4. 18:57

포인터 배열

배열의 요소가 포인터(메모리주소)로 이루어진 것

 

일반 배열

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