c 배열

떵떵·2022년 6월 18일
0

선언

자료형 배열명[크기] = {내용}
ex) int numArr[10] = { 0, }

int main()
{
	int numArr[10];
    
    printf("%d", numArr[0]);
}

c언어에서 배열의 선언은 여러 종류가 있다.

  1. 초기화 없이 선언
    int numArr[10];

  2. 정해진 크기만큼 초기화하여 선언(크기 설정 안해도 됨)
    int numArr[] = {0,1,2,3,4,5,6,7,8,9}
    초기화 한 만큼 배열의 크기가 만들어지므로 크기설정 불필요

  3. 크기 정하고 0으로 채워서 선언
    int numArr[10] = {0, };
    원하는 크기만큼 0으로 초기화하여 선언함.

사용

배열명[인덱스]
numArr[0]

int main()
{
	printf("%d", numArr[0]);
}

numArr[0]은 numArr배열의 0번째 인덱스 값을 반환하여 printf()문으로 표준출력 된다.

값 넣을 때

배열명[인덱스] = 값
numArr[4] = 10

포인터에 배열 넣기

배열은 첫번째 요소의 주솟값만 담고있다. 즉 주솟값이기 때문에 포인터에 넣을 수 있다.

int main()
{
	int numArr[] = {0,1,2,3,4}
    int *numPtr;
    numPtr = numArr;
    
    printf("%d", *numPtr);
}
>>> 0

int 포인터 numPtr을 선언하고 numArr 주솟값을 넣을때 numArr은 배열이기 때문에 &을 붙이지 않고 numPtr = numArr로 포인터에 할당한다.

포인터와 배열의 크기 차이

int main()
{
	int numArr[] = {0,1,2,3,4};
    int *numPtr = numArr;
    
    printf("%d\n", sizeof(numArr));
    printf("%d\n", sizeof(numPtr));
}
>>> 5
>>> 4

sizeof()로 크기를 구할떄 배열을 넣으면 배열에 할당된 크기(5)만큼 반환하고
포인터를 넣으면 포인터속 메모리 할당크기가 아닌 포인터 자체의 크기를 반환하기 떄문에 pointer의 크기인 4가 반환한다. (64bit = 8byte)

0개의 댓글