본문 바로가기

컴퓨터/C

C array 1차원 배열과 포인터

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3
  4 int main(void) {
  5   system("clear");
  6   int arr[3] = {1, 2, 3};
  7
  8   printf("arr 의 %%p: %p\n", arr);
  9   printf("&arr[0]의 %%p: %p\n", &arr[0]);
 10   puts("━━━━━━━━━━━━━━━━━━━━━━━━━━━");
 11   for(int i=0; i<sizeof (arr)/sizeof (int); i++) {
 12     printf("&arr[%d]의 %%p: %p | arr+%d의 %%p: %p\n", i, &arr[0], i, arr+i);
 13   }
 14
 15   return 0;
 16 }

8~9: arr의 주소값은 arr[0]의 주소값이다.

12: 포인터+1 연산을 하면 배열의 다음 인덱스로 이동한다.

  1 #include <stdio.h>
  2
  3 int main(void) {
  4   int arr[2]={1,2};
  5   int* pArr=arr;
  6
  7   //배열 이름을 통한 출력(배열 이름을 포인터처럼 사용)
  8   printf("%d, %d\n", arr[0], *(arr+1));
  9
 10   //포인터 변수를 통한 출력(포인터를 배열처럼 사용)
 11   printf("%d, %d\n", pArr[0], *(pArr+1));
 12
 13   return 0;
 14 }

10, 13: arr[i] == *(arr+i)

'컴퓨터 > C' 카테고리의 다른 글

C scanf()  (0) 2022.10.14
C printf()  (0) 2022.10.14
C hello, world!  (0) 2022.10.14
C 변수 scope  (2) 2022.09.08
C function 함수  (0) 2022.09.02