728x90
728x170
3번
#include <stdio.h>
int main () {
// 1단계
int num1 = 10;
int *ip1 = NULL, **ip2 = NULL, ***ip3 = NULL;
// 2 단계
ip1 = &num1;
ip2 = &ip1;
ip3 = &ip2;
printf("ip3 삼차원 포인터를 사용한 num1 변수에 접근한 값은 %d입니다. \n", ***ip3);
return 0;
}
4번
#include <stdio.h>
int main () {
// 1단계
int num1 = 10;
int *ip1 = NULL, **ip2 = NULL, ***ip3 = NULL;
printf("num1 변수 값은 %d입니다. \n", num1);
// 2 단계
ip1 = &num1;
ip2 = &ip1;
ip3 = &ip2;
*ip1 += 10;
printf("num1 변수 값은 %d입니다. \n", num1);
// 3 단계
**ip2 += 10;
printf("num1 변수 값은 %d입니다. \n", num1);
// 4 단계
***ip3 += 10;
printf("num1 변수 값은 %d입니다. \n", num1);
return 0;
}
5번
#include <stdio.h>
int main () {
// 1 단계
int array[3] = {10, 20, 30};
int *ip = NULL, **ipp = NULL, i;
// 2 단계
ip = array; // 배열의 이름은 주소 값이므로 & 기호가 필요 없다.
ipp = &ip;
for (i = 0; i < 3; i++)
printf("ipp 2차원 포인터로 접근한 배열 array의 %d 번째 값은 %d 입니다. \n", i, *(*ipp+i));
return 0;
}
6번
// 파트2 3장 6번 문제
#include <stdio.h>
// 함수와 함수 포인터의 선언부에서
// 입력값의 타입 부분은
// int *p 와 int p[] 모두 가능합니다.
// 해당 부분의 주석을 바꾸어가며 확인해보세요.
// 함수의 선언부
//void arrInput (int p[], int length);
void arrInput (int *p, int length);
int main () {
int array[5] = {10, 20, 30, 40, 50};
// 함수 포인터의 선언부
//int (*pfunc) (int [], int);
int (*pfunc) (int *, int);
pfunc = arrInput;
pfunc(array, 5);
return 0;
}
//void arrInput (int p[], int length) {
void arrInput (int *p, int length) {
int i = 0;
for (i; i<length; i++)
printf("%d ", p[i]);
printf("\n");
}
728x90
그리드형
'IT > 프로그래밍' 카테고리의 다른 글
C언어 본색 파트2 Chapter 5 연습문제 솔루션 (0) | 2021.05.31 |
---|---|
C언어 본색 파트2 Chapter 4 연습문제 솔루션 (0) | 2021.05.31 |
C언어 본색 파트2 Chapter 2 연습문제 솔루션 (0) | 2021.05.31 |
C언어 본색 파트2 Chapter 1 연습문제 솔루션 (0) | 2021.05.31 |
C언어 본색 파트1 Chapter 9 연습문제 솔루션 (0) | 2021.05.31 |
댓글