본문 바로가기

전체 글

(64)
[C언어 강좌] #27 번외편 - 코딩스타일 안녕하세요. 이번에는 쉬어가는 느낌의 번외편으로 코딩스타일에 대해서 설명해드리려합니다.프로그래밍을 하다보면 다른 프로그래머와 일하게되는일이 많이 있을수 있죠.다른 프로그래머와 공동작업을 할때 충돌이 날수 있는 부분이기도 합니다.기계가 이해하는건 모두 똑같겠지만 코드는 사람이 작성하기때문에 차이를 보이게됩니다. 대표적인 코딩스타일으로는 중괄호위치와 변수이름이 있죠. 중괄호에 따른 대표적인 코딩스타일은 다음과 같은게 있다고합니다. 코드 스타일 if(1){printf("Hello, world!");} BSD if(1) {printf("Hello, world!"); } GNU if(1) {printf("Hello, world!");} K&R 이 이외에도 여러가지가 있는거로 알고있지만 대표적으로 사용하는것은 위 ..
[C언어 강좌] #26 - static 이번에는 static변수에 대해 알아봅시다. 전역변수와 지역변수 모두 static을 쓸수 있습니다. 하지만 일단 지금은 지역변수에 대한 부분만 알아봅시다.전역변수에서의 static은 나중에 설명드리겠습니다. 지역변수에 static은 전역변수의 성질을 갖게됩니다. 하지만 지역변수적인 특성도 가지고있죠.static이 붙게된 지역변수도 선언된 지역변수는 해당 지역에서만 접근이 가능합니다. 이건 지역변수의 특징과 같습니다.하지만 전역변수처럼 프로그램이 종료될때까지 소멸되지 않고 메모리 공간에 존재합니다. 이건 전역변수의 특징과 같지요. 이 예제를 보면 전역변수처럼 변수가 소멸되지 않습니다.static 변수는 한번만 초기화되고 프로그램과 운명을 함께하게됩니다. 하지만 전역변수처럼 모든공간에서 쓸수있는것이 아니라 ..
[C언어 강좌] #25 - 전역변수 저번편에서는 지역변수에 대해서 알아봤습니다. 이변 편에서는 그것와 비교되는 개념인 전역변수를 알아봅시다.전역변수는 지역변수와는 달리 모든지역에서 사용이 가능한 변수입니다.프로그램이 실행될때 메모리공간에 할당되서 프로그램이 종료될때까지 프로그램과 운명을 함께하는 변수입니다.13편에서도 소개된적이 있는 이 전역변수는 지역변수와는 달리 중괄호 내에서 선언하지 않고 밖에서 선언해주면 됩니다. 위와같이 중괄호 밖에서 선언해서 전역변수 a가 만들어졌습니다.전역변수는 지역변수와는 달리 프로그램이 끝날때까지 소멸하지 않기때문에 hello를 여러번 출력했더니 a값이 증가되서 출력되는걸 볼수 있습니다. 그리고 전역변수는 특이한 성질이 하나 더 있습니다. 위와같이 전역변수에 초기값을 지정해주지 않았더니 0으로 초기화댔습니다..
[C언어 강좌] #24 - 지역변수 더 자세히 안녕하세요. 강좌 13편에서 지역변수에 대해 언급하고 지나갔습니다.하지만 아직 설명하지 못한부분이 많기때문에 더 자세하게 설명해드리겠습니다. 저번시간에 지역변수는 중괄호 내에서 선언되면 모두 지역변수라고 했었죠.그리고 지역변수는 메모리에서 존재 기간과 변수에 접근 가능한 범위에서 차이를 보입니다.그리고 중괄호로 둘러쌓인곳을 하나의 지역이라 하고 그 지역에 있는 지역변수들은 해당 지역을 벗어나면 소멸합니다.즉 중괄호가 닫히는 부분부터 사용이 불가능합니다. 그리고 함수도 중괄호로 둘러쌓여있기 때문에 동일하게 적용됩니다. hello함수를 3번 호출하면 변수 a도 3번 선언되고 소멸하고를 반복합니다. 그리고 지역변수는 선언된 지역에서만 존재하기때문에 다른 지역에서 같은 이름의 변수가 선언되도 문제 없습니다.he..
[C언어 강좌] #23 - 식 안녕하세요. 이번에는 식에 관련된 내용을 다뤄볼까 합니다. 함수를 소개하다가 뜬금없이 나오긴 했지만예전에 자세하게 설명해드리지 못하고 놓친부분이라 이번에 제대로 설명하고 가려고 합니다. 저번에 배운 연산자와 연결되는 내용이라고 볼수 있기때문에 안보셨다면 먼저 보는걸 추천합니다.6강 연산자 - http://dokkiblog.tistory.com/22 식에는 결과값이 나와야합니다.우리가 아는 대입연산자같은것도 모두 결과가 있습니다. 대입연산자같은 경우에는 우측의 값을 좌측에 저장한 후에 우측의 값이 결과로 남게됩니다. a = b = 50이런 코드같은 경우에도 b = 50이 진행된 후 50이 남게되서b에 50이 저장된 후 a = 50이란 식이 남게되고 a에도 50이 저장됩니다. 결합 순서에 대해서는 저번 6강..
[C언어 강좌] #22 - 함수의 인자, 리턴 이번시간에는 함수의 인자와 리턴에 대해서 자세하게 알아봅시다.함수를 소개하는시간에 언급되었던 것들이죠? 그리고 인자는 저번 매개변수 시간에 더 알아봤었습니다. 두 정수의 합을 구하는 함수를 만들어봤습니다.함수를 호출할때 넘겨주는 값이 인자라고 했었죠. 여기서는 10과 30이 인자가 됩니다. 넘겨주는 인자의 개수는 항상 매개변수의 개수와 같아야합니다.그리고 첫번째 인자는 첫번째 매개변수에 대입되고 두번째 인자는 두번째 매개변수에 대입되는식이라고 보시면 됩니다. 그리고 위와같이 변수를 넣을수도 있고 연산을 한것도 인자로 들어갈수 있습니다.식이 있으면 항상 그자리에는 결과가 남게되서 그 결과가 인자로 들어가는것이죠. 물론 함수를 호출해서 반환된 값을 또 인자로 넣어줄수도 있습니다.반환된 값은 함수를 호출한 자..
[C언어 강좌] #21 - 함수 매개변수 안녕하세요. 함수의 매개변수에 대해 알아봅시다.저번에 함수를 소개하는시간에 언급됐었습니다. 이 hello라는 함수가 있는 코드를 짜봤습니다.위 코드의 hello함수에서 int형을 변수를 한개 받고있습니다.hello함수를 호출할때 보내주게 되는 값이 바로 인자고 함수에서 그 인자를 받고 선언되는것이 매개변수입니다.위 코드에서는 5가 인자가되고 int num이 매개변수가 되는거죠.그리고 5를 인자로 받은 함수는 int num에 5가 들어가있게되고 printf("%d, num);은 5를 출력하게됩니다. 매개변수는 아무것도 받지 않을수도 있고 여러개도 받을수 있습니다. 위와같이 매개변수가 들어갈 자리에 void라고 적어주시면 아무것도 받지 않게됩니다.물론 void를 적어주지 않아도 아무것도 받지 않을수 있습니다..
[C언어 강좌] #20 - 함수 호출과 흐름 함수의 흐름에 대해 알아봅시다. c언어로 프로그램을 작성할때 코드는 위에서부터 아래로 흐른다고 했습니다.위와같이 작성하면 정상적으로 작동되겠죠. 하지만 hello함수각 main 아래에 있으면 어떻게될까요? 위와같이 오류가 나게됩니다. 오류가 나지 않더라도 경고같은게 띄워질겁니다.위에서부터 아래로 읽어나가기때문에 hello를 호출하는부분에서는 아직 hello가 무엇인지 모르기 때문입니다. 그렇기때문에 위에서 hello가 있다는것을 먼저 알려줘야합니다. 이렇게 함수의 원형을 먼저 선언해두면 본체가 뒤에있더라도 정상적으로 컴파일됩니다. 그리고 위에서부터 아래로 흐른다고 말했지만 함수를 호출하면 그 함수가 있는곳의 코드가 실행됩니다.메인함수는 프로그램의 출발점이라고 했습니다. main함수에서 시작하여 6,7번째..