달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

[C언어 핵심강의 05] 포인터의 이해

 

변수란 무엇인가? 기록할 수 있는 공간 (블록)이다.

하드웨어 디스크 상의 어떤 위치의 블록 (실제로는 아주 아주 작은 조각)의 상태 (:기록된 형태. 즉 값)가 '0000 0111'라고 되어 있다 하자. 이는 2진수로서 10진수로 바꾸면 7이다.

 

만약 이 블록의 이름을 num 이라고 하면, 이제부터 이 블록은 num이라는 변수이며, 이 블록에 적힌 상태 7이 num의 값이다. 그리고 하드웨어 상에서 이 블록의 위치가 곧 num의 주소이다.

즉, '변수의 주소'는 하드웨서 상에서 블록(변수)의 위치를 표시해 놓은 숫자이다. 집 주소를 예로 들면, 우리집 우체통이 변수이고 우체통의 주소가 변수의 주소 그리고 우체통의 내용 (편지, 소포 등)이 변수의 내용이다.


그리고 컴퓨터가 2진수를 다루는 만큼 (즉, 값의 저장도 2진수 상태. 연산도 2진수를 기반으로 이루어짐), 메모리를 8비트나 16비트 단위로 표기한다. 그래서 메모리 주소를 흔히 16진수로 표현한다.

 

자 그럼..num의 값이 7이고 그 주소가 0x12ff76이라고 하자.

근데 이 num의 주소도 숫자이므로, 이 주소값을 다른 변수의 값으로 저장할 수도 있지 않을까?

있다. 그렇게 하겠다고 선언하는 지시자가 포인터 연산자 (*)이다.

 

따라서 포인터 변수는 다른 '변수의 주소값'을 값으로 저장하는 변수이다. 

 

아래 그림을 보면서 이해하자.

아래 pnum에 저장된 값은 num의 조소값이다. 즉, pnum==&num 이다.

그러면 'pnum의 값(주소)안에 있는 값(num의 값 7)'을 가리키고 싶을 때는 어케해야 할까?

이 땐 *을 붙혀, *pnum이라 한다.

 

 그럼 또 이렇게도 생각해 볼 수 있겠지...

pnum의 주소를 값으로 갖는 변수 ppnum (이를 더블포인터 라고 한다)을 말이야.

그럼 ppnum은 뭐지? &pnum이지

그럼 *ppnum은? pnum 즉, &num 이지.

글머 **ppnum은? *pnum즉, *(&pnum) 하여 7이지.

으크크크크~~  헷갈린다 그치?

그니깐 '포인터 연산자 표현'은 이해만 했다고 넘어가지 말고, *이랑 주소표시&를 앞뒤로 붙혀가며 그 형태에 익숙해 져야 한다구.

 

 

 위에서 설명한 내용을 한 화면에 합쳐 보았어.

 

 이상으로 포인터의 이해 : 변수의 개념, 변수의 주소, 더블포인터에 대해 공부해 보았습니다.

질문을 댓글로, 강의료는 손가락 꾸욱~*


Posted by C언어 보이
|

[C언어 핵심강의 04] 조건문 예제 : 두 수 빼기 프로그램

 

아닥하고 문제부터 보자.

3-5. 두개의 정수 a와 b를 입력받아, 큰 수에서 작은 수를 뺀 값을 출력하는 프로그램을 작성하라.

    

a-b하면 돼지 뭐가 문제야? 할 수 있다. 근데 a=2,b=4면? -2를 출력하게 되므로 곤난하다..

이 경우 b-a로 하게 해야 한다. 이게 풀이의 핵심이다. 읭? 10분 주께 풀어보자.

 

정답공개.

핵심은 조건검사의 구간을 둘로 나누는 것.

 

알겠즤??

이상으로 '조건문 예제 : 두 수 빼기 프로그램'를 풀어보았다.

잘 보셨으면 추천 꾸욱~*

 

Posted by C언어 보이
|

나머지 연산자(%)의 활용 : 홀수 짝수 출력 프로그램

 

%2는 2로 나눈 나머지 값이다.

가령 4%2는 0, 3%2는 1이다. 4%3은? 3이다.

이 나머지 연산자는 조건식으로 유용하게 쓰인다.

 

아래 기본적인 활용문제를 풀어보자.

3-1. 정수를 입력받아 홀수(odd number) 또는 짝수(even number) 결정하는 프로그램을 작성하라. 0의 경우는 zero라고 출력하라.

    

홀수와 짝수를%로 정의하는 것이 핵심이다.

홀수%2는 1, 짝수%2는 0 이다.

 

이상으로 '나머지 연산자(%)의 활용 : 홀수 짝수 출력 프로그램'

너무 간단하게 끝나서 허무한가?

말하지 않았던가 난 핵심만 말하는 깔끔한 사람이라고 ㅋㅋ

 

잘 보셨으면 손가락 꾸욱~ 눌러주세요~~

Posted by C언어 보이
|

[C언어 핵심강의 02] 반복문, 조건문의 개념과 예시

 

반복문 : 반복의 조건을 만족하는 한, 계속 반복하라는 명령문.

조건문 : 조건을 만족하면, 함 해 달라는 명령문. 여자친구가 잘 해 주면, 뽀뽀를 해 준다. 여기서 '잘 해 주다'가 조건이며, '뽀뽀를 해 준다'가 명령문이다. 이 '잘 해 주다'를 식으로, '뽀뽀를 해 준다'를 식으로 쓰는 것이 프로그래밍인 것이다.  

 

위 반복문과 조건문이 프로그래밍에서 제일 많이 쓰인다. 뽀뽀는 물론 그 이상도 가능하다는 말이다. 읭??

 

[체크사항]

- break : 반복문 로프 탈출

- continue : 이하 코드를 통과하여 위로 다시 점프

- while 조건식을..while 안에 if break로 대체할 수 있음.

- switch문의 case나 goto문의 label이나 둘 다 주소.

- If 문은 조건식 중에서도 범위를 나타낼 때에 특히 유리함.

 

아래코드는 조건문과 반복문 두 가지 예제를 합쳐 놓은 것이다.

코드 1. 누적합 구하기. 조건문 : 두 수 num1, num2를 입력받고, 그 중에 큰 수를 big에 넣는 것이다. 그래서 big만 출력하게 하면 두 수 중에 num1, num2 중에 큰 수만 출력하게 되는 것이다.

 

코드 2. 등차수열 누적합. 반복문 : 설명이 필요없다.

 

이상으로 반복문, 조건문의 개념과 예시에 대하여 알아보았다.

아래 손가락! 눌러주시고 좋은 하루 보내세요~*

 

Posted by C언어 보이
|

[C언어 강의] 강의소개

 

 본 연재물은 C언어를 공부하는 사람에게 '쉽고 빠른 요약 및 보충설명'을 제공하기 위해 기획되었다.  그러므로, 아래의 사람에게 적합하다.

 

1. 공부하는 교재보다, 더 쉬운 혹은 깊은 설명이 필요한 사람.

2. 이미 C언어를 공부한 후, '핵심위주로 빠르게' 복습하고 싶은 사람.

 

따라서 교재에 있는 중복설명은 핵심만 요약하며, 경우에 따라 어려운 주제에 대해서만 설명을 하기로 한다. 다만, 본 강의물에서 제시된 예제는 최소한의 필수 예제이므로 꼭 따라해 보기를 바란다.

 

설명의 편의를 위하여, 문체는 인터넷음슴체를 쓰기로 한다.

그럼 본격적인 강의로 고고싱 해 보자.

 

 

Posted by C언어 보이
|