728x90
반응형
많은 시간이 걸렸던 과제... 배운건 많았던 것 같다...
#include<stdio.h> int main() { char arr[3][6] = { { "APPLE\n" },{ "GRAPE\n" },{ "MANGO\0" } }; // 3-6 이차원 배열 선언 char *p; // 포인터 변수 p 선언 char **pp; // 이중 포인터 pp 선언 int i; p = arr; // p의 주소값에 배열 arr 주소값 삽입 pp = &p; // pp의 주소값에 포인터 변수 p의 주소값 삽입 - 이중포인터 for (i = 0; i < 18; i++) { printf("%c", *p); // p에 저장된 포인터가 가리키는 값 출력 p++; // p의 주소값 1씩 증가 (char형 - 1바이트) } p = p - 12; // p의 주소값을 12 뺀다(17 - 12 = 5) printf("\n%c\n", *p); // 5번째 p의 포인터가 가리키는 값 출력 --> G printf("%c\n", *((*pp) + 2)); /* 포인터p의 주소값이 5번째 --> 포인터 변수 p의 주소값 pp의 포인터가 가리키는 값도 G를 가리킴. --> *pp에 2를 더하면 7번째 있는 값 출력*/ printf("%c\n", **pp); // 포인터 p의 주소값의 주소값의 포인터값 printf("%s\n", *(pp)); // 이중포인터 pp에 있는 주소의 포인터 값 *pp = (*pp) + 3; // pp의 포인터가 가리키는 값 + 3 --> P printf("%c%c%c%c \n", *(*pp++), *(*pp + 4), *(*pp - 5), **pp); // pp의 포인터가 가리키는 값에 후치연산을 하였지만 값은 변하지 않음 --> P // pp의 포인터에 4를 더하면 --> A // pp의 포인터가 가리키는 값(P) 의 5번째 앞 포인터가 가리키는 값 -- > E // *pp의 포인터가 가리키는 값 --> P /* printf("%c \n", **pp);를 하게 게되면 Segmentation fault (core dumped)가 띄는데 그 이유는 *(*pp++)에서 연산자 우선순위를 보게되면 알 수 있다. */ return 0; }
반응형
'Programming > C' 카테고리의 다른 글
[C] strcmp 함수 구현하기 (0) | 2017.04.10 |
---|---|
[C] 난수 최대값 구하기 (0) | 2017.04.10 |
[C] 짱짱 포인터 분석 1 (0) | 2017.04.09 |
[C] N x N 행렬 오름차순 ㄹ 정렬 (0) | 2017.04.03 |
[C] N x N 행렬 오름차순 역순 정렬 (0) | 2017.04.03 |
댓글