정보처리기사 공부
정보처리기사 실기 (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이거있으면 개행이니깐 꼭 잘 읽어보기!!
포인터는 이런유형으로 많이 나오길래 정리해봄.
반응형