본문 바로가기

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

[C언어(강의)] 29강~ 34강 (2차원 배열과 포인터, 포인터 배열)

 

[ 흥달쌤 유투브 강의 정리 

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

 


 

(29강) 2차원 배열과 포인터 (1)

2차원 배열 => 행과 열로 구성.

int a [3] [2]  => 3행 2열로 구성.

2차원 배열에서 *a는 a [0]의 주소값, **a는 a[0][0] 인 1.

 


 

=> x = 5, y = 9

 

int [ ] [3]  => 행값이 없고 열값만 있음, 3개씩 끊기.

Data  ------>   Data[0]  = {  1  ,  3  ,  4  }

100                   100       100   101  102

                      Data[1]  = {  5  ,  2  ,  9  }

         p =           103      103   104  105

                      Data[2]  = {  6  ,  8  ,  7  }

                         106      106   107  108

 


 

(30강) 2차원 배열과 포인터 (2)

=> sum1 = 5, sum2 = 11

 

darr  ------>    darr[0]  = {  1  ,  2  ,  3  }

100                   100       100   101  102

                      darr [1]  = {  4  ,  5  ,  6  }

                         103      103   104  105

                      darr [2]  = {  7  ,  8  ,  9  }

                         106      106   107  108

sum1 = 2 + 3 = 5

sum2 = 4 + 7 = 11

 


 

(31강) 포인터 배열 (1)

 

* 포인터 배열

 배열의 요소가 포인터(메모리주소)로 이루어진 것.

 

=> a는 주소값을 가지는 배열.

주소값을 출력하면 주소값이 가르키는 문자열을 끝(null)까지 연속으로 출력. 

 

=> str은 문자열의 주소값을 가지는 배열.

주소값을 출력하면 주소값이 가르키는 문자열의 끝(null)까지 연속으로 출력. 

 

=> student 는 문자열 배열의 주소값을 가지는 배열.

student에는 각 문자열의 주소값인 20 | 30 | 40 이 들어간다.

 


 

=> bbb

 

   c   ------>    {  20  ,  30  ,  40  }   : 주소값을 가지는 배열

100                100    101     102

주소값  20   --->   a  a  a

주소값  30   --->   b  b  b

주소값  4  --->   c  c  c

 


 

(32강) 포인터 배열 (2)

=> morning

     u

 

array1   ------>    {  20  ,  30  }   : 주소값을 가지는 배열

 100                     100    101     

주소값  20   --->   G  o  o  d  v  m  o  r  n  i  n  g

주소값  30   --->  v l  a  n  g  u  a  g  e

 

array1[0] + 5  =>  25번지의 값부터 (문자열 s)출력  = morning

*( array1[1] + 6 )  =>  36번지의 값(문자 c)출력  = u

 


 

(33강) 포인터 배열 (3)

=>   1

      -10

       14

 

  a  ------>    a[0]  = {  -3  ,  14  ,  5  }

100              100      100   101   102

                    a[1]  = {  1  ,  -10  ,  8  }

                     103      103   104  105

 

  b  ------>   { a[0]a[1] }  =>  {  100 , 103  }    : 주소값을 가지는 배열

 200                                                      p 

 


 

(34강) 포인터 배열 (4)

=>   37

 

 arr   ------>    {   30  ,  40  ,  50  }   : 주소값을 가지는 배열.

100                  100   101   102

 

주소값  30   --->   12

주소값  40   --->   24

주소값  50   --->   36

 

*arr[1]   =>  40번지의 값  = 24

**arr + 1  => (100번지가 가르키는 주소값)이 가르키는 값 + 1 =  13 

                                        주소값 30