본문으로 바로가기

파일의 IT 블로그

프로그래밍 강좌/C

해당되는 글 34
  • thumbnail
    프로그래밍 강좌/C

    [C언어 강좌] #16-1 문자열 표준 함수와 기타 표준 함수

    이전에 문자열에 대해 배운적이 있습니다. 프로그램을 만들면서 문자열을 다루는 상황이 많게 되므로 문자열은 상당히 유용한데요. C언어에서 문자열을 구현하는 방법 2가지 다시 리마인드하고 넘어가자면 "Hello" 라는 문자열이 있다면 1. 배열을 통한 문자열 char string[] = "Hello" 와 같은 형식으로 선언하고 각 배열 요소 string[0] = 'H', string[1] = 'e'.. string[5] = '\0' (널문자)가 문자인 것으로 구현됩니다. 2. 포인터를 통한 문자열 char * string = "Hello" 와 같은 형식으로 선언하고 "Hello"라는 문자열이 읽기 전용 메모리 공간에 할당되며 string이라는 char형 포인터 변수가 "Hello"라는 문자열의 시작주소를 가..
  • thumbnail
    프로그래밍 강좌/C

    [C언어 강좌] #15 공용체와 열거형

    안녕하세요 파일입니다. 저번 구조체편에 이어서 공용체와 열거형입니다. 구조체를 제대로 이해하셨다면 이번에 새로배우는 공용체는 구조체와 사용방법이 거의 동일하기 때문에 어렵지 않게 익힐 수 있습니다. 또한 열거형도 그렇게 어려운 내용은 아니니 걱정하지 않으셔도 됩니다. 그럼 바로 시작해봅시다. 공용체 앞에서 배운 구조체처럼 사용자 정의 자료형에는 또 '공용체' 라는것이 있습니다. 공용체는 선언 형태와 사용 형태가 구조체와 거의 동일합니다. 그럼 공용체는 무엇일까요? 공용체의 의미는 그룹으로 묶여진 여러 개의 멤버 변수들 중에 가장 큰 메모리 공간을 '공유' 해서 사용하는 것 입니다. 밑줄쳐진 저 공유한다는 부분이 구조체와의 매우 큰 차이점이라고 할 수 있겠습니다. 단순히 말로만은 이해가 어려으므로 그림을 ..
  • thumbnail
    프로그래밍 강좌/C

    [C언어 강좌] #14-2 구조체(Structure Type)

    포인터편에서 함수를 호출할때 두가지 방법인 값에 의한 호출(Call by Value), 주소에 의한 호출(Call by Reference) 를 배웠었습니다. 일반 변수의 값, 주소를 매개변수로 넘길 수 있었듯 구조체의 경우에도 구조체 변수의 값, 주소를 매개변수로 넘길 수 있습니다. 그리고 배열의 경우에는 배열을 매개변수로 넘길때 배열의 이름 자체가 주소고, 매개변수로 int a[]와 같이 써줘도 컴파일러에서 int * a와 같은 포인터로 자동변환하기 때문에 어떻게하든 주소에 의한 호출만 가능했었는데요. 과연 구조체는 여기서 어떻게 될까요? 한번 알아보겠습니다. 구조체 변수를 이용한 값에 의한 호출 #include struct pos { int x; int y; }; void CallbyValue(str..
  • thumbnail
    프로그래밍 강좌/C

    [C언어 강좌] #14-1 구조체(Structure Type)

    안녕하세요 파일입니다. 드디어 지겹던 포인터가 끝나고 새로운 강좌명으로 상쾌한 시작을 할 수 있게 되었습니다 ! * 하지만 포인터는 포인터가 끝난뒤에도 항상 어디서나 등장합니다.. 여기서도 나와요 오늘 배워볼것은 구조체(Structure Type)입니다. 만약에 '학생1' 이 있고 이름이 '홍길동' 이라면 이것을 프로그래밍으로 표현할때 어떻게 하면 좋을까요? #include int main(){ char * student1 = "홍길동"; printf("학생 1의 이름은 : %s 입니다.", student1); return 0; } 저번에 배운 포인터 문자열을 활용하면, 대충 이렇게 하면 되겠죠? 근데 학생을 관리하려면 이름만 알아선 부족합니다. 예를 들어서 학번도 있을꺼고, 고등학생이라면 학년, 반도 ..
  • thumbnail
    프로그래밍 강좌/C

    [C언어 강좌] #13-3 포인터(Pointer)

    안녕하세요 파일입니다. 포인터 3편을 시작하겠습니다. 포인터는 기본적으로 배울것도 많고, 어렵고, 힘이 듭니다 ㅠ 저도 작성하는 내내 고역이네요.. 그래도 다행인건 포인터 편은 이번이 마지막입니다! 힘내보자구요 (아 참고로 썸네일은 포인터라고 치면 나오는 개를 사용했습니다. 아무 의미 없고 어그로 용이니 무시해주세요 ㅋㅋ) #include int main(){ int a = 0; scanf("%d", &a); printf("%d", a); return 0; } 지금까지 C언어로 입력을 받으면서 printf로 출력할땐 안그랬는데 scanf로 입력받을때는 항상 &a처럼 앞에 &(앰퍼샌드) 기호를 붙였었습니다. 주소로 값을 넘겨야만 했습니다. 이건 나중에 설명하겠다고만 했지 이유도 몰랐고 그냥 외워서 쓰는 수..
  • thumbnail
    프로그래밍 강좌/C

    [C언어 강좌] #13-2 포인터(Pointer)

    안녕하세요 파일입니다. 저번 강의에 이어서 포인터 2번째 시간입니다. 바로 시작해보겠습니다! 포인터와 2차원 배열 &연산자와 *연산자로 2차원 배열을 공부하던것 기억나시나요? 1차원 배열일때는 &array[0]을 하면 첫번째 주소의 값을 가르켰었습니다. 2차원 배열일때는 조금 달랐죠. *(array + 0) == array[0] 이며 이것은 곧 0행의 대표주소 &array[0][0] 이였습니다. 1행의 대표주소는 *(array + 1) == array[1] 이며 이것은 곧 1행의 첫번째 요소의 주소 &array[1][0] 가 되었습니다. 포인터를 이용한 2차원 배열 탐색 #include int main(){ int arr[3][4] = { //3행 4열 {1,2,3,4}, {5,6,7,8}, {9,10,..
  • thumbnail
    프로그래밍 강좌/C

    [C언어 강좌] #13-1 포인터(Pointer)

    안녕하세요 파일입니다. 앞에서 다차원 배열을 다룬 뒤로 거점 한 달쯤에 뵙네요! 앞의 연도가 바뀐 건 기분 탓입니다 ㅎㅎ.. 가 아니고 저 글을 작성하고 많이 바빠졌는데 까먹고 강의를 강제 동면시켜버렸습니다 죄송합니다 ㅋㅋ.. 그래도 제 강의 봐주시는 분들이 꽤 있었는데 이미 다른 강의로 도망가버린 거 같아요.. 그래도 꽤나 많은 부분을 공부했으니 스스로 잘하시고 계시겠죠 ㅎㅎ? 어쨌든 C언어 개념에 고지가 얼마 남지 않았습니다! 오늘 배울 것은 포인터입니다! C언어가 Low-Level에 가깝다고 표현하는 이유가 바로 C언어에 존재하는 포인터 때문입니다. 포인터는 일종의 흑마법에 가까운데 일단 이해하긴 어렵고 위험하나 완벽히 이해한다면 거의 모든 것을 할 수 있습니다. 사실 이런 설명을 들으면 무슨 개소..
  • thumbnail
    프로그래밍 강좌/C

    [C언어 강좌] #12-2 [Array] 다차원 배열

    안녕하세요. 오늘은 앞에서 배운 1차원 배열에 이어 다차원 배열을 보겠습니다. 저희는 3차원 세계에 살고 있습니다. 그렇기 때문에 4차원을 이해할 수 없죠. 1차원은 선분, 2차원은 면, 3차원은 입체라고 합니다. 배열을 만들땐 1차원을 넘어 2차원, 3차원, 4차원,..., n차원 배열까지 만들 수 있습니다. 사실 4차원부턴 사용할 일이 그렇게 많지 않습니다. (AI 라던가, 테트리스 라던가..) 그렇기에 다차원 배열은 대개 3차원 까지를 가리킵니다. 물론 다차원 배열은 2차원 배열 이상을 가리키므로 4차원, 5차원을 다차원 배열이라고 불러도 무리가 없습니다. '다차원 배열'이라고 이름 붙은 이유는 인간의 논리인 1차원, 2차원, 3차원을 배열에 적용시켜서 이해하기 위함입니다. 다음 사진은 2차원 배열..
    이모티콘창 닫기
    울음
    안녕
    감사해요
    당황
    피폐

    이모티콘을 클릭하면 댓글창에 입력됩니다.