C-프로그래밍 3D Array, 3차원 배열 배우기!


이전에 배웠던 1D array와 2D Array를 복습해봅시다.


1D array(1차원 배열)은 row(행)이 하나인 배열이라고 생각하면 된다고 했습니다.

Row(행)이 하나이기 때문에 단순히 int Array[10] = {0}; 이렇게 초기화와 동시에 선언해줄 수 있다고 했습니다.


반면에 2D array(2차원 배열)은 row(행)가 2개인 배열이라고 생각하면 된다고 했는데요.

Row(행)이 두 개이기 때문에 int Array[2][3] = {0}; 이런식으로 선언과 초기화가 동시에 가능할 것입니다.


ex) [ 1D - Array] 

 int Array[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

for(i=0; i<10; i++){

printf(" %4d", Array[i]);

}


result : 1   2   3   4   5   6   7   8   9   10


ex) [2D - Array]

int Array[2][3]={{1,2,3},{4,5,6}};


for(i=0; i<2; i++){

for(j=0; j<3; j++){

printf("%4d", Array[i][j]);

 }

printf("\n");

}

result : 1   2   3

    4   5   6


이런 식으로 출력됨을 알 수 있습니다.


이제 부터 조금 어렵습니다! 드디어 3D-Array 3차원 배열인데요,

사실 3차원 배열부터는 사용할 일이 거의 없습니다.

3차원 배열을 생각할 때 쉽게 생각하려면

1차원 배열이 선이었다면, 2차원 배열은 면이고, 3차원 배열은 부피(?), 라고 생각하면 되겠습니다.

1차원 배열에서 row(행)이 여러개 추가된게 2차원 배열이었으니,

3차원 배열은 1차원 배열에서 하나 더 추가 되어야 겠지요?


ex) 1D-Array int array[10];

{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

ex) 2D-Array int array[2][3];

{{1, 2, 3}, {4, 5, 6}};

ex) 3D-Array int array[2][2][3];

{ { {1, 2, 3}, {4, 5, 6} }, { {1, 2, 3}, {4, 5, 6} } };


얼핏 보기에는 조금 어렵죠? 1차원 배열이 위 같이 선언되었다면, 요소가 10개인 1차원 배열이 하나 선언되었다고 생각하면 됩니다.

2차원 배열이 위 같이 선언되었다면 3개 짜리 요소를 가진 행이 두 개 있다. 라고 생각하면 쉬울 듯 합니다.

3차원 배열은 뒤에서부터 생각하면 쉬울 것 같은데요, 3개짜리 요소를 가진 행 두개가 두 개 있다. 라고 생각하면 쉽죠?


[2][2][3] 이니까, 3개 짜리 요소를 가진 행 2개가 2번 있다!

{{1, 2, 3}, {4, 5, 6}}, {{1, 2, 3}, {4, 5, 6}}

이렇게 되는 겁니다!


3차원 배열은 사실 쓰일 일이 많이 없다는게 함정입니다.(Karnaugh map(K-Map)에서도 6-Variables 부터는 잘 안 쓰이는 것 처럼 말입니다.)


고생하셨습니다.


나중에 더욱 더 품격있는 강의로 돌아오겠습니다.

Happy Studies!

안녕하세요. C-프로그래밍 기초 강좌 블로그 블로거입니다.


차근차근 배워보자고요.


앞서 아주 기초적인 printf("blah blah\n"); 함수와 scanf("%d", &a); 함수를 배워봤는데요.

오늘 배울 함수는 이와 매우 유사한 getchar(); puchar(); 함수 입니다.


printf함수와 scanf함수는 '프린트에프', '스캔에프'로 발음합니다.

하지만 getchar(); 함수와 putchar();함수는 사람 마다 발음이 조금씩 다릅니다.


미국 : get character

한국 : get character 혹은 getcha(겟차)

인도 : get careu (겟카르)


국가 마다 조금씩 발음 방법이 다르지만 코딩 안에서는 똑같이 사용됩니다!


[예시]

#include <stdio.h>


int main(void){

int a, b = 0;

char input = 0;


printf("input one byte characater : ");

input = getchar();   //이렇게 하면 input 값을 받게 됩니다.

input = putchar();    //이렇게 하면 input 값을 출력하게 됩니다. printf 함수와 다를게 없습니다.


return0;

}


getchar();

putchar();


사실 getchar(), putchar(), printf(), scanf() 함수의 사용여부와 사용빈도 차이는 개인적인 기호 차이인 것 같습니다.



happy studies! 열심히 공부하세요!

C 프로그래밍 헤더 종류


오늘은 C 프로그래밍 Dev C++ 컴파일 프로그램에서 초보자들에게 가장 많이 사용되고 중용한 헤더 종류에 대해서 설명하겠습니다.


01)_#include <stdio.h> // Standard input & output . header 를 include 하라는 내용입니다. 사실 잘 모르시겠다면 외우시면 됩니다. 무조건 필요한 헤더입니다. 


#include <stdio.h>

#include <stdio.h>

#include <stdio.h> // 이렇게 3번 이상 손으로 직접 작성해봄으로써 외우는 것도 좋은 방법입니다!


02)_ #include <stdlib.h> // Standard library . header를 include 하라는 내용입니다. 

stdlib.h 헤더가 포함하는 내용은 library function, library variables, library macros 등등이 있다.

가장 가까운 미래에 사용할 함수가 sizeof 함수와, rand, NULL 인데, 이러한 내용들이 stdlib.h 헤더에 포함되어 있다! 역시 중요하다!


03)_ #include <math.h> // math . h 직역하면, 수학 . 헤더 이다. 즉 수학적인 내용을 담는 헤더일 것이라고 추측 가능하다! 그런데 추측 그대로 수학적 내용을 담고 있는 것이 사실이다! tan, atan, sin, asin, cos, acos, acosh ... 등등 삼각함수, 역삼각함수, 쌍곡함수 등등 이러한 수학적 내용을 담고 있다.



이러한 헤더 파일을 모두 필요로 하는 예시 하나를 보여주겠다.

ex)


#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#define N 10

int main(){

int a[10]={0};

int i=0;

srand(time(NULL));

for(i=0; i<N; i++){

a[i]=rand()%100;

printf("a[%d] = %d\n", i, a[i]);

}


return 0;

}



이제 곧 배울 함수 rand(); , srand(time(NULL)); 를 미리 한번 꺼내보아서 알아 보았다. 랜덤 함수가 은근히 재밌으니 계속 주의 깊게 봐줬으면 좋겠습니다!

the functions that we are going to learn are pretty easy, so I want you guys to keep your eyes on the lecture posts!


C - 프로그래밍 포인터 강의


#include <stdio.h>

#define N 10

int main(void){

int a=N;

int *p;

p=&a;


printf("*p=%d\n", *p);    //*p=10

printf("a=%d\n", a);      //a=10



return 0;

}


포인터는 쉽게 말하자면 어떤 값의 주소를 가리키는 화살표이다.


포인터를 선언하는 방법은 두가지가 있다.

01)

int a=0;

int *p=&a;

02)

int a=0;

int *p;

p=&a;


이렇게 포인터를 선언해주면 *p는 a값을 고스란히 갖게 된다.

그리고 그냥 p는 a의 값이 위치한 주소값을 갖게 된다.


아직은 조금 어렵겠지만 쉬워질거다.

'Study' 카테고리의 다른 글

C-프로그래밍 배열 기초 공부하기!  (0) 2018.05.10
C 프로그래밍 강의 포인터 함수  (0) 2018.05.10
C 프로그래밍 (2)  (0) 2018.05.01
C 프로그래밍 입문 (1)  (0) 2018.05.01
학교 다니면서 수익창출 하는 방법.  (0) 2017.12.05

%d


%u


%c


%s


%lf


%f


%o


모른다면 정상이다!


integer

float

double

array

string

unsigned

signed

long-int

long-long-int

character

hexadecimal

decimal

octa


이런 것에 대해 앞으로 배울 것이다!

익혀둬라!

+ Recent posts