내가 보려고 만든 블로그

정보처리기사 실기 (c언어) 포인터 본문

정보처리기사 공부

정보처리기사 실기 (c언어) 포인터

hjh1023 2023. 4. 25. 18:44
반응형

포인터

#include <stdio.h>
int main(){
  int *arr[3];
  int a = 12, b = 24, c = 36;
  arr[0] = &a;
  arr[1] = &b;
  arr[2] = &c;
 
  printf("%d\n", *arr[1] + **arr + 1);
  return 0;
}

*arr[1]=24

**arr + 1 = a의 0번째에 있는 12에 1더한값 13이다.

둘이 더하면 37이나옴.

 

#include <stdio.h>

struct jsu {
  char name[12];
  int os, db, hab, hhab;
};


int main() {
  struct jsu st[3] = {{"데이터1", 95, 88}, 
                    {"데이터2", 84, 91}, 
                    {"데이터3", 86, 75}};
  struct jsu* p;
 
  p = &st[0];
 
  (p + 1)->hab = (p + 1)->os + (p + 2)->db;
  (p + 1)->hhab = (p+1)->hab + p->os + p->db;
 
  printf("%d\n", (p+1)->hab + (p+1)->hhab);


  return 0;
}

(p+1)->os = 데이터2의 os자리에 있는 84이다. (p+2)->db는 데이터3의 75이다.

(p+1)->hab = 84 + 75 = 159

(p+1)->hhab = 159 + 95 + 88 = 342

(p+1)->hab + (p+1)->hhab = 501

501

 

#include <stdio.h>

int main() {
    struct insa {
        char name[10];
        int age;
    } 
    
    a[] = { "Kim", 28, "Lee", 38, "Park", 42, "Choi", 31 };
    
    struct insa* p;
    
    p = a;
    p++;
    
    printf("%s ", p->name);
    printf("%d\n", p->age);
	
    return 0;
}

p++을 했기 때문에 그냥 p가 "Lee",38 여기로 감.

그래서 프린트했을때 Lee 38이렇게 나옴.

Lee 38

 

 

***********

#include <stdio.h>

int main() {
	
  char *p = "KOREA";
  
  printf("%s\n" , p);
  printf("%s\n" , p+3);
  printf("%c\n" , *p);
  printf("%c\n" , *(p+3));
  printf("%c\n" , *p+2);

	
  return 0;
}

KOREA

EA

K

E

M

 

%s나오면 일단 문장이겠다 생각하고 %c나오면 한글자라고 생각하기.

\n이거있으면 개행이니깐 꼭 잘 읽어보기!!

포인터는 이런유형으로 많이 나오길래 정리해봄.

반응형