#include <stdio.h>
int* input(); // 여기에 * 연산자 왜 붙여요?
int main(void)
{
int* p = NULL;
p = input();
printf("%d \n", *p);
return 0;
}
int* input(); // 여기에 * 연산자 왜 붙여요?
{
static int num1;
scanf("%d", &num1);
return &num1;
}
#include <stdio.h>
int* input(); // 여기에 * 연산자 왜 붙여요?
int main(void)
{
int* p = NULL;
p = input();
printf("%d \n", *p);
return 0;
}
int* input(); // 여기에 * 연산자 왜 붙여요?
{
static int num1;
scanf("%d", &num1);
return &num1;
}
'int* input()' 이라는건 'int* 형의 값을 반환하는 input() 함수' 라는건 알지? 즉 input() 함수는 연산후에 return 값으로 '값(value)'이 아닌 변수의 '주소'를 반환하는거야
여러분 ㄳㄳ 이해됐음
근데 "num1은 input()의 지역변수잖아? 그럼 input() 함수 끝나면 num1 변수 사라지지 않음?" 라는 의문이 생길 수 있는데, num1의 선언을 보면 "static int num1" 이라고 선언되어있지? 여기서 static 때문에 input() 함수가 종결되어도 메모리 상에서 num1 변수는 사라지지 않고 그대로 남게 되어있어. 전역변수를 지역변수 선언하듯 선언한거라고 보면 돼