[SW정글][C]배열포인터와 포인터배열

JST·2023년 9월 1일
0

C

목록 보기
1/6
#include<stdio.h>

int main(){
    int array[3] = {1,2,3};
    printf("%p \n",array); //array의 시작 주소를 반환(array의 첫 번째 인자의 시작 부분을 가리킴) : 0x7fffffffdca4 
    printf("%d \n",*array); //array의 시작 주소의 값을 반환 : 1 
    printf("%p \n", array + 1); //array의 두번째 인자의 주소를 반환 : 0x7fffffffdca8 (+1은 +4byte)
    
    printf("%p \n",&array); //array의 시작 주소를 반환(array 전체의 시작 부분을 가리킴) : 0x7fffffffdca4
    printf("%p \n",(&array)+1); //array 배열 전체의 다음 주소를 가리킴 : 0x7fffffffdcb0 (2차원 배열이면 다음 배열 가리킴 - [{1,2,3},{4,5,6}] 의 4 시작부분 주소)
    
    int (*ptr)[3] = &array; // 배열포인터 (원소가 3개로 이루어진 array라는 배열을 가리키는 포인터 변수 ptr)
    printf("%p \n",ptr); // 0x7fffffffdca4 

    int a, b, c;
    a = 10; b = 20; c = 30;
    int *ap, *bp, *cp;
    ap = &a; bp = &b; cp = &c;
    int *(arr[3]) = {ap, bp, cp}; // 포인터 배열 (포인터 원소로 이루어진 배열 arr)
    printf("%p \n",arr); // 포인터 배열 - 원소가 포인터로만 이루어진 원소 3짜리 배열 : 0x7fffffffdcb0
    
    return 0;
}

malloc을 배열 포인터로 초기화 & cast

int (*intPtr)[5];
intPtr = (int(*)[5])malloc(sizeof(int)*5);

0개의 댓글