본문 바로가기

프로그래밍/C 기초

(49)
[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번째..
[C언어 강좌] #19 - main함수 저번시간에 함수에대해서 배워봤습니다.우리가 맨날 사용하고있던 main도 함수입니다.main함수는 프로그램이 시작하는 지점입니다. main함수가 없다면 시작지점이 없기때문에 프로그램이 실행될수 없습니다. 평소에 우리는 다음과같이 main함수를 작성했었습니다.int main(void) {return 0;}예제를 작성할때는 리턴을 적지 않았지만 리턴이 적혀있지 않으면 자동으로 1을 반환하게됩니다.확실하게 해주려면 가능한 적어주는게 좋죠.mian함수는 void를 인자로 받고있습니다. void는 존재하지 않는다는뜻이죠.받는 인자가 없다는것을 의미합니다. 근데 반환형이 int형이네요? main함수는 정수를 반환합니다. 근데 함수에서 반환값은 함수를 호출한곳으로 돌아간다고 했었죠?프로그램의 시작점인 main함수의 반..
[C언어 강좌] #18 - 함수 드디어 함수를 배우는 시간이 왔습니다.아마 함수라는 단어는 중학교수준만 되도 수학시간에 배우기때문에 이미 익숙하실겁니다. 함수를 배울떄 이런그림 본적 있으시죠? 함수는 무언가를 보내주면 연산을 하고 다시 무언가를 돌려보내줍니다. 수학에서의 함수와는 꽤 차이가 있지만 일단 프로그래밍의 함수도 비슷하게 받아들일수 있습니다.물론 아무것도 보내지 않고도 실행할수 있지만요. 우리가 지금까지 봐왔던 int main(void)도 함수입니다.지금까지 제가 예제에서 return 0;을 입력하지 않았지만 원래는 입력해야합니다.return은 값을 반환하는것입니다. return 0;일경우 함수를 호출한 영역으로 해당 값을 전달합니다.반환형이 int형이기때문에 return에서 정수형으로 반환해주면 됩니다. 그리고 처음 보이는게..