조금씩 꾸준히 완성을 향해

[C 언어] 배열과 포인터 본문

기타 언어/C 언어

[C 언어] 배열과 포인터

all_sound 2023. 3. 18. 21:54

배열과 포인터의 관계

 

int a[5];

int *b = a;

a[2] = 10;

b[2] = 20;

 

<예제 1>

#include <stdio.h>

int main() {
  int i;
  int a[] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
  int *ptr = a+3;
  for(i=0; i<5; ++i){
    printf("%d ", *(ptr+i)-3);    
  }
}
// 출력: 37 47 57 67 77

 

<예제 2>

#include <stdio.h>

int main() {
  int a[] = {1, 2, 4, 8};
  int *p = a;
  p[1] = 3;
  a[1] = 4;
  p[2] = 5;
  printf("%d %d\n", a[1]+p[1], a[2]+p[2]);  
  return 0;
}
//출력: 8 10

 

※ 주의!

 - 만약 int *p = a+1; 이라면? 

p[1] 의 값은 a[2]의 값인 5

p[2] 의 값은 a[3]의 값인 8

 

 

<예제 3>

#include <stdio.h>

int main() {
  int a[4] = {10, 20, 30};
  int *p = a;
  p++;
  *p++ = 100;
  *++p = 200;
  printf("a[0]=%d, a[1]=%d, a[2]=%d\n", a[0], a[1], a[2]);  
}
//출력: 10 100 30

 

 

<예제 4>

#include <stdio.h>

int main() {
  int num[4] = {1, 2, 3, 4};
  int *pt = num;
  pt++;
  *pt++ = 5;
  *pt++ = 10;
  pt--;
  *pt+++=20;
  printf("%d %d %d %d", num[0], num[1], num[2], num[3]);  
}
//출력: 1 5 30 4

 

 

 

 

 

※ 유튜브 흥달쌤 깨알 C언어 특강을 직접 정리한 내용입니다

'기타 언어 > C 언어' 카테고리의 다른 글

[C 언어] 포인터 배열  (1) 2023.03.21
[C 언어] 2차원 배열과 포인터  (0) 2023.03.18
[C 언어] scanf와 변수  (0) 2023.03.18
[C 언어] 포인터(pointer)  (0) 2023.03.18
[C 언어] 배열  (1) 2023.03.17