전역변수, 지역변수의 단점에 관하여
#include<stdio.h>
int num; // 전역변수 선언
int main()
{
num = 10; // 초기화1
printf("%d", num);
num = 20; // 초기화2
printf("%d", num);
return 0;
}
const int num=20; // 전역변수 선언
int main()
{
int num=30;
printf("%d", num); // 30 출력
return 0;
}
#include <stdio.h>
#include <string.h>
void function_1(char * str, int len);
int main()
{
char name[30];
int len = sizeof name / sizeof (char);
function_1(name, len);
}
void function_1(char * str, int len)
{
fputs("Enter the str : ",stdout);
fgets(str, len, stdin); // 에러 발생
puts(str);
}
/* name 지역변수는 main 함수 작동시 스택에 쌓였다가 버려지기에 함수 인자로 활용 시
주소값으로 주어져야 한다. 범용성이 떨어진다는 얘기.
내가 원할때 'stdlib.h'의 표준함수 malloc을 통해 메모리공간을 할당하고, 또 내가 원할때 표준함수 free를 통해 공간을 비울 수 있다. 변수의 생존기간을 내 마음대로 조작할 수 있다는 것!!
자세한 활용법은 다음 포스트에