본문 바로가기
IT/프로그래밍

C언어 본색 파트2 Chapter 3 연습문제 솔루션

by nutrient 2021. 5. 31.
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
그리드형

댓글