2015년 6월 29일 월요일

2015026 C언어의 핵심! 함수! C언어에서만 main함수가 가장먼저 시작(먼저시작하는 함수=Entry Point)

메모리에 저장된곳을 CPU가 기억하는 방식?

Symbol Talbe
Type Name Address(메모리 주소)
int    A       1000
int    B       1004

return이 지닌 2가지 의미
1. 함수를 빠져나간다!
2. 값을 반환한다.

반환형태 함수이름 입력형태
int         main      (void) // 소괄호 필수 인자 인수 소괄호안의 void 생략가능
인자가 없다는의미로 사용=void(회피하다)
{
// 함수의 몸체
return 0; // 0은 정수형 0?(return)이없으면 반환값이 없음
}

int Add(int num1, int num2) // 함수의 선언
{ // 함수의정의
// int num1; (매개변수를 생략해도됨)
// int num2; (매개변수를 생략해도됨)
return num1+num2;
}

int Add(int, int) // 매개변수의 이름을 생략한 표현

예제
#include <stdio.h>

int Add(int num1, int num2) // 인자전달 (O), 반환 값 (O)
{
return num1+num2;
}

void ShowAddResult(int num) // 인자전달 (O), 반환 값 (X)
{
printf("덧셈결과 출력 : %d\n", num);
}

int ReadNum(void) // 인자전달 (X), 반환 값 (O)
{
int num;
scanf("%d", &num);
return num;
}

void HowToUseThisProg(void) // 인자전달 (X), 반환 값 (X)
{
printf("두 개의 정수를 입력하시면 덧셈결과가 출력됩니다.\n");
printf("자! 그럼 두 개의 정수를 입력하세요.\n");
}

int main(void)
{
int result, num1, num2;
HowToUseThisProg();
num1=ReadNum();
num2=ReadNum();
result=Add(num1, num2);
ShowAddResult(result);
return 0;
}









#include <stdio.h>

int bNum1;
int bNum2;
int bNum3;

int dNum1=100;
int dNum2=100;
int dNum3=100;

int main(void)
{
int sNum1;
int sNum2;
int sNum3;

printf("%08X\n", &bNum1);
printf("%08X\n", &bNum2);
printf("%08X\n", &bNum3);
printf("\n");
printf("%08X\n", &dNum1);
printf("%08X\n", &dNum2);
printf("%08X\n", &dNum3);
printf("\n");
printf("%08X\n", &sNum1);
printf("%08X\n", &sNum2);
printf("%08X\n", &sNum3);
printf("\n");
printf("%08X\n", printf);
printf("%08X\n", scanf);
printf("%08X\n", main);

return 0;
}
memory
상수, 함수Code
변수DatadNum1
변수BSSbNum1
변수Heap
변수StacksNum1

댓글 없음:

댓글 쓰기