【 C 언어 】 #35 포인터 이해하기

Language/C & C++ 2018. 4. 23. 14:02 Posted by 엑소더스팩토리
반응형

【 C 언어 】 #35 포인터 이해하기



 포인터 는 C언어에서 종종 중요하게 사용된다. 포인터를 이용하여 메모리로 직접 접근이 용의하고 하드웨어적인 부분을 직접 컨트롤 할 수 있기 때문이다.

다만 처음 개념 이해가 어려울 수 있으나 예제 내용을 바꾸어가며 테스트해 보면 비교적 쉽게 이해될 것이다. 

포인터 변수는 원변수의 분신의 역할을 하게 되고 원변수가 가지는 똑같은 값을 지닌다. 즉, 원변수의 값이 바뀌면 포인트 변수의 값이 똑 같은 값으로 바뀌며, 그 반대도 마찬 가지다. 


▶ 문제  : 변수 두 개를 선언후 각각의 포인터 변수를 선언하고 변수 내용을 바꾸면 포인터 변수의 내용도 바뀌는지 확인하는 프로그램을 작성하라.


▶ 포인트 


- mainA 변수에 포인터 변수 *ghost, mainB 변수에 포인터 변수 *pman 을 지정


- 포인터 변수 선언 :   int* ghost

- 지정 방법 :  변수명에 '&'를 붙이고 포인트 변수에 대입 ghost =&mainA 



▶ 프로그램 : 




▶ 실행 결과 :



▶ 보충설명 :


ghost = &manA; // manA의 분신으로 포인터 변수인 ghost를 지정 

*ghost = 1;       //분신 관계 이므로 *ghost에 입력한 1값이 manA에도 저장 됨

printf("manA = %d, *ghost=%d \n\n",manA, *ghost);  // 값 확인 

manA = 2; // manA에 2를 입력해도 분신 *ghost에 2가 저장됨 

printf("manA = %d, *ghost=%d \n\n",manA, *ghost);

pman = &manB; // manB의 분신으로 포인터 변수인 pman을 지정 

*pman = 3; // 분신인*pman에 3를 입력하면 manB에도 3이 저장됨 

printf("manB = %d, *pman=%d \n\n",manB, *pman);

pman = &manA; //manB의 분신으로 지정한 pman을 manA에 추가로 분신                      // 지정 하면 manB에는 분신이 없는(해제) 상태가 되고 

       // manA는 기존 분신 *ghost에 ,  *pman까지 새로 추가된다. 

*pman = 4;       // pman은 현재 manA의 분신이다. 

printf("manA=%d, *pman=%d, *ghost=%d, manB=%d,  \n\n", manA, *pman, *ghost, manB);

manA = 5;      // manA의 분신으로 ghost, pman 두개가 지정 되어 있다. 

printf("manA=%d, *pman=%d, *ghost=%d, manB=%d,  \n\n", manA, *pman, *ghost, manB);  

*ghost = 6;

printf("manA=%d, *pman=%d, *ghost=%d, manB=%d,  \n\n", manA, *pman, *ghost, manB);

manB = 7;     // manB 값을 바꾸어도 분신해제된 pman값은 변하지 않는다  

printf("manA=%d, *pman=%d, *ghost=%d, manB=%d,  \n\n", manA, *pman, *ghost, manB);



[ 코드에 실행시 결과 값 표시 ]




+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



▶ 소스코드 다운로드 :  


35 포인터 이해하기.cpp


반응형
반응형

【 C 언어 】 #33 배열 이해하기 2 (국영수 성적 예제)



 앞 글에서 다룬 배열을 사용하면 여러 종류와 많은 데이터를 일괄적을 관리하기에 편하다.  


▶ 문제  : 국영수 3과목 각 10개의 점수 데이터를 배열로 저장하고 각 과목별 점수와 각 과목의 평균값을 출력하라. 

 

▶ 포인트 

  먼저 국영수 등 기본 값들을 출력하고, 각 값들의 평균값 계산 및 저장을 위한 변수를 선언한다. everageK(국어평균), everageE(영어평균)everageM(수학평균), 평균값 변수 선언 때 float 형과 같은 실수형을 선언해야 소숫점의 평균값을 다룰 수 있으며, 깔끔한 출력을 위해 소숫점 출력 자릿 수를 지정하면 좋다. (%.1f  : 소수 첫 째 자리까지만 표시) 지정하지 않을 경우 "87.500000" 과 같이 표시 됨


▶ 프로그램 : 




▶ 실행 결과 :



+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



▶ 소스코드 다운로드 :  



반응형

【 C 언어 】 #32 배열 이해하기

Language/C & C++ 2018. 4. 16. 10:08 Posted by 엑소더스팩토리
반응형

【 C 언어 】 #32 배열 이해하기



 데이터 값을 배열을 사용하면 쉽고 편하게 저장하고 꺼내 쓸 수 있다. 


▶ 문제  : 영어 성적 10개를 배열을 사용하여 기억시키고 차례대로 출력하도록 하시오.

 

▶ 포인트 

 배열은 다음과 같은 형식을 사용 한다. 

 int 배열명[10] = { x1, x2, x3, ... };


 배열값 출력은 for 문을 사용하면 차례대로 쉽게 출력 된다. 


▶ 프로그램 : 




▶ 실행 결과 :





+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



▶ 소스코드 다운로드 :  



반응형

【 C 언어 】 #31 ASCII 코드 - 문자열 이해하기

Language/C & C++ 2018. 4. 13. 14:59 Posted by 엑소더스팩토리
반응형

【 C 언어 】 #31 ASCII 코드 - 문자열 이해하기



 아스키(ASCII) 코드 문자를 출력하는 프로그램을 작성해본다. 

이 원리를 파악하면 특정 순서에 있는 아스키 값을 수식 계산으로 손쉽게 출력할 수 있다.


▶ 문제  : 아스키 코드로 명명된 문자(열)들을 0~255까지 순서대로 출력하시오. 

 

▶ 포인트 

 정수 출력은 %d, 문자는 %c 를 사용하여 출력한다.  

 또한, C 프로그래밍에서 문자를 표현할 때는 ' ' 로 ,  문자열을 표현할 때는 " " 를 사용한다.   정수 출력 자리수를 3자리로 지정(유지)하고 싶을 때는 '%3d' 로 하면 된다.  빈자리는 공백으로 채워짐


▶ 프로그램 : 





▶ 실행 결과 :







+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++




▶ 소스코드 다운로드 :  


31 ASCII 코드 문자열 이해하기-프로그램.cpp




반응형

【 C 언어 】 #30-무조건-분기문 (goto 문)-이해하기

Language/C & C++ 2018. 4. 13. 12:12 Posted by 엑소더스팩토리
반응형

【 C 언어 】 #30-무조건-분기문 (goto 문)-이해하기


 무조건 분기(이동, 빠져나옴) 되는 goto 문은 잘 사용하지 않지만 다중 if문에 둘러 쌓였을 때 한번에 빠져 나올 수 있는 기능이 있어 간혹 유용하게 사용되기도 한다. 


▶ 문제  : 이중 if문을 사용하여 구구단 프로그램을 작성하고 구구단의 마지막 식(9 X 9 = 81)에 다다르면 goto 문을 사용하여 이중 if문을 빠져나와서 종료하도록 작성하라.

 

▶ 포인트 

 goto 문 사용 형식 →  "goto gugudan;"   "gugudan:;"    

이 때 'gugudan'은 따로 선언할 필요는 없으며 이동 할 위치에 기입하면 된다.


▶ 프로그램 : 





▶ 실행 결과 :




+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++




▶ 소스코드 다운로드 :  


30 무조건 분기문 이해하기 (goto 문).cpp


반응형
반응형

【 C 언어 】 #28-조건-순환문(while continue break)-이해하기


 조건 순환문은 대개의 경우 for 문을 대신하여 사용되며, " while(조건식) {  } "형태로 사용된다.  이 조건문이 참인 동안 '{ 중괄호 내용 }' 을 계속 반복 실행하며, 중괄호 속에 if 문과 함께 continue;  break; 문을 사용하여 계속실행시키거나 빠져나올 수 있는 형태를 취할 수도 있다.


▶ 문제 1 : 1부터 10까지를 더하는 프로그램을 단순 while 문을 이용하여 작성 하시요.    int i;  int tot=0;

 

▶ 포인트 


 반복 조건으로 1 <= 10 까지만 반복하도록 한다.   증가 명령어로 i++; 을 사용


▶ 프로그램 : 





▶ 실행 결과 :





▶ 소스코드 다운로드 :  


28 조건 순환문(while continue break)이해하기.cpp


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


▶ 문제 2 : 정수값을 입력받아 해당 정수값까지 계속 더하는 프로그램을 작성하되, 어떤 숫자를 입력 받든 50까지만 제한 하도록 continue; 와 break; 문을 이용하여 작성하시오. 

 

▶ 포인트 


 ex) while 반복문 속에 if( ) continue;를 넣어 반복 조건을 만들고,  if( ) break; 문을 넣어 해당조건이 되면 반복문을 빠져나오도록 한다. 

조건문 속에 AND ( '&&' )  혹은  OR( '||' ) 넣어 두가지 조건을 동시에 물을 수 있음. (  ||  기호는  키보드의 '' 기호 위에 있는 기호를 shift 키를 눌러 두번 입력한 것임.  )


▶ 프로그램 : 




▶ 실행 결과 :


10을 입력 한 결과


100을 입력 한 결과



▶ 소스코드 다운로드 :  

28 조건 순환문(while continue break)이해하기-문제2.cpp


반응형