2015년 10월 19일 월요일

씹어먹는 C 언어...

http://itguru.tistory.com/notice/15

C언어 문단구조 | int main(), void mail() ?

- main() 함수
main() 함수는 프로그램 실행 시 운영체제에 의해서 맨 처음 호출되고 맨 나중에 종료된다.

main()  함수의 선언 형태
int main (void)

int integer의 줄임 말로 정수를 의미
void는 비어 있다는 의미
'int main (void)'를 전체적으로 해석해 보면 입력(void형)없이 main 함수를 호출해서 출력은 정수(int형)로 하라는 의미

- 표준 라이브러리 함수와 헤더 파일은 프로그래밍을 편하게해준다.
- 세미콜론은 문장의 끝을 의미하는 마침표와도 같은 존재이다.

- return은 반환과 종료의 의미를 갖는다.
함수의 기능 역역에 있는 return의 의미는 두가지 이다.

첫째: 함수를 호출한 영역으로 값을 반환하다는 의미
둘째: main() 함수를 종료한다는 의미

#include<stdio.h>
int main(void)
{
printf("Hello C world \n");
return 0;
}
운영체제에 0을 반환하고 main() 함수를 종료해라
(운영체제는 반화값 0을 통해 프로그램이 정상적으로 종료되었는지 아닌지를 판단)

#include<stdio.h>
int main(void)
{
printf("Hello C world \n");
return;
}
반환할 것이 없으니 main() 함수를 그냥 종료해라

 

void는 일반적으로 함수에서 리턴하는 값이 없을때 나타냅니다. 
그렇기 때문에 void는 '값이 없음'을 나타냅니다.

그리고 void * 는 흔히 일반 포인터라 부르는 것으로 포인터로의 성질을 가지고 있다는 것만 명시하기 위할 때 사용하는 것입니다. 
쉽게 말하면 어떤 자료형의 포인터로도 변형이 가능한 포인터 형을 선언할 때 사용합니다. 
그렇기 때문에  void *로 선언한 포인터는 증감, 차감 연산을 할 수 없습니다. 
이유는 정해진 자료형이 없기 때문에 어느정도의 증감, 차감을 해야 할지 알 수 없기 때문입니다.

그리고, void main(), main(), void main(void) 가 있는데..
세개 다 틀린 문법입니다.

main함수의 형태는
int main()
int main(int argc, char **argv)
이 두가지 형태만이 맞습니다.

물론 Visual C++, Turbo C 에서 void main()의 형식을 지원해주기는 하지만 이건 컴파일러에서 지원해주는 확장기능일 뿐이지 옳은 문법이라 할 수 없습니다.

소프트웨어 개발자를 위한 신개념 컨설턴트(Q/A)

http://www.tipssoft.com/