정보처리기사/[흥달쌤] 실기_깨알 C언어

C언어 특강 / 25~28. 배열과 포인터(1) ~(4)

web_seul 2022. 5. 24. 22:55
반응형

25. 배열과 포인터(1)

문) 다음 C프로그램의 출력값은?

#include<stdio.h>
int main(void){
  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);
  }
}

 

26. 배열과 포인터(2)

* 배열과 포인터의 관계

  int a[5];

  int *b = a;

  a[2] = 10;

  b[2] = 20;

  a의 번지값 100

a[0] a[1] a[2] a[3] a[4]
    a[2] : 10 -> b[2] : 20    

b = 100

 

문) 다음 C프로그램의 출력 값은?

#include<stdio.h>
int main(void){
  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;
}

 

cf) 문제변형

#include<stdio.h>
int main(void){
  int a[] = {1,2,4,8}; 
  int *p = a+1;	//변형된 부분
  p[1] = 3;
  a[1] = 4;
  p[2] = 5;
  printf("%d %d\n", a[1]+p[1], a[2]+p[2]);
  return 0;
}

27. 배열과 포인터(3)

문) 다음 C프로그램의 실행 결과로 옳은 것은?

#include<stdio.h>
int main(void){
  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]);
}

 

28. 배열과 포인터(4)

문) 다음 C프로그램의 실행 결과로 옳은 것은?

#include<stdio.h>
void 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]);
}

 

반응형