본문 바로가기

정보처리기사/c언어강의

[C언어(강의)] 21강~24강 (배열, 포인터, scanf)

 

[ 흥달쌤 유투브 강의 정리 

https://www.youtube.com/watch?v=wgdLUvIYprY

 


 

(21강) 배열(1)

 

* 배열이란?

같은 자료형의 변수를 연속적으로 묶어 놓은 저장공간.

 

* 배열의 선언

int a [ 5 ]      자료형/배열명 /개수

=> a[0]  a[1]  a[2]  a[3]  a[4]  라는 5개의 메모리 공간 생성.

a라는 변수는 첫번째 공간(배열의0번지)의 메모리 주소값을 가진다.

( a[0]의 주소값이 '100'이라면 a가 가지는 주소값도 '100' )

 


 

* 이차원 배열

같은 자료형의 변수를 행과 열의 연속적인 공간으로 묶어 놓은 것.

총 6개의 공간 생성. (실제로는 1차원 배열처럼 나란히 저장.)

 

=> 2 

msg[2] ~ msg[12] 일때 까지 반복. ( " H e l l o V W o r l d ! V G o d V L u c k ! " )

msg[4] = 'o' , msg[7] = 'o' 일떄만 number++

 


 

(22강) 배열(2)

 

=> notian

i=0 ; str[0] 과 str[5] 바꾸기 => nation

i=1 ; str[1] 과 str[4] 바꾸기 => notian

i=2 ; str[2] 과 str[3] 바꾸기 => noitan

i=3 ; str[3] 과 str[2] 바꾸기 => notian

 


 

(23강) 포인터

 

* 포인터란?

메모리의 위치를 표현한 기호.

 

* 포인터 변수 선언

1. a는 포인터 변수 (주소값을 가지는 변수)

2. *a (a의 값_ a가 가르키는 주소에 할당된 값) = 10

3. printf("%d", a)   _ a의 주소값(번지수) 출력

4. printf("%d", *a)  _ a의 주소값(번지수)에 할당된 값 

 

=> a의 주소값이 100번지라면, 100번지의 값이 10

printf("%d", a)    => 100

printf("%d", *a)   => 10

 


* 변수의 주소 찾기

1. a는 포인터 변수

2. a에 b의 주소값 할당

 

=>  b의 주소값이 102번지라면, a는 102번지, *a는 10

printf("%d", *a)   => 10

printf("%d", b)     => 10

 


 

=> 30

B = A --  ( B에 A의 값을 대입한 이후에 A에 '--' 연산 적용. )B += 20

A = 9  => 100번지   //   B =  30   =>  101번지   //   C는 101번지.

=> *C는(B의 값_101번지의 값) 30

 


 

(24강) scanf와 변수

 

* scanf

사용자의 키보드로 입력받을 때 사용하는 함수.

형식 => scanf("%d", 변수의 주소);

 

* scanf 사용법

 


 

=> 90, 20, 90

=> scanf 로 입력받는 값을 k의 주소에 할당