포인터로 넘겨서 참조하게 하는 방법도 있지만 그런 짓을 왜 하려는거지 - return 0;
커헠(msca8h)2017-12-11 00:31
static 변수를 전역으로 접근하고 싶으면 얄짤없이 함수 외부에 선언해야 함. 함수 내 선언된 전역변수의 접근성을 제한하는 이유는 해당 변수명을 다른 함수에서도 써먹을 수 있도록 하기 위해서임. 예컨데 fuck() 과 rape() 란 함수가 대상을 저장하는 static int sexy_chick; 란 이름의 정적변수를 선언할 때 같은 이름을 쓸 수 있도록 하기 위해서랄까...
ㅇㅇㅇ2(209.234)2017-12-11 00:31
만약 함수 내 선언된 정적 변수가 전역으로 접근 가능해질 경우 rape() 함수는 변수명 충돌 때문에 sexy_chick2; 처럼 다른 이름으로 선언해야 하는 귀차니즘이 생기지. 여기에 insult() 함수가 추가될 경우엔 sexy_chick3 로 가는 등 귀찮아지니까 함수 내 선언된 변수는 변수명 충돌을 막기 위해 함수 내로 접근을 제한하는거임.
ㅇㅇㅇ2(209.234)2017-12-11 00:33
컴파일러를 수정하면됨
코로모(qscsq1)2017-12-11 00:35
만약 fuck() 과 rape() 와 insult() 와 bungabunga() 함수가 동일한 sexy_chick 변수에 접근해야 한다면... 당연히 함수 밖에 선언해놔야 함. 요컨데 함수별로 별개의 정적 변수를 접근하냐, 아니면 같은 정적 변수를 접근하냐의 선택을 쉽게 하기 위해 그런 스코프가 존재하는거임.
ㅇㅇㅇ2(209.234)2017-12-11 00:36
교수가 메인함수 밖에다 전역변수 선언한거 보고 init 함수 안에다가 넣으라고 그러더라고....
글쓴(121.152)2017-12-11 00:52
흠... 전역변수포비아 교수님이신가보네... 전역변수 혐오하는 분들도 있긴 있지.
ㅇㅇㅇ2(209.234)2017-12-11 02:15
되도록 안쓰는게 맞긴 하지. 그럼 int형일 경우 값복사로 계속 떠넘겨야지 별수 있냐? 구조체인 경우는 포인터로 넘기고.
함수 내에서 선언한 static 변수는 함수 내에서만 접근이 가능합니다.
포인터로 넘겨서 참조하게 하는 방법도 있지만 그런 짓을 왜 하려는거지 - return 0;
static 변수를 전역으로 접근하고 싶으면 얄짤없이 함수 외부에 선언해야 함. 함수 내 선언된 전역변수의 접근성을 제한하는 이유는 해당 변수명을 다른 함수에서도 써먹을 수 있도록 하기 위해서임. 예컨데 fuck() 과 rape() 란 함수가 대상을 저장하는 static int sexy_chick; 란 이름의 정적변수를 선언할 때 같은 이름을 쓸 수 있도록 하기 위해서랄까...
만약 함수 내 선언된 정적 변수가 전역으로 접근 가능해질 경우 rape() 함수는 변수명 충돌 때문에 sexy_chick2; 처럼 다른 이름으로 선언해야 하는 귀차니즘이 생기지. 여기에 insult() 함수가 추가될 경우엔 sexy_chick3 로 가는 등 귀찮아지니까 함수 내 선언된 변수는 변수명 충돌을 막기 위해 함수 내로 접근을 제한하는거임.
컴파일러를 수정하면됨
만약 fuck() 과 rape() 와 insult() 와 bungabunga() 함수가 동일한 sexy_chick 변수에 접근해야 한다면... 당연히 함수 밖에 선언해놔야 함. 요컨데 함수별로 별개의 정적 변수를 접근하냐, 아니면 같은 정적 변수를 접근하냐의 선택을 쉽게 하기 위해 그런 스코프가 존재하는거임.
교수가 메인함수 밖에다 전역변수 선언한거 보고 init 함수 안에다가 넣으라고 그러더라고....
흠... 전역변수포비아 교수님이신가보네... 전역변수 혐오하는 분들도 있긴 있지.
되도록 안쓰는게 맞긴 하지. 그럼 int형일 경우 값복사로 계속 떠넘겨야지 별수 있냐? 구조체인 경우는 포인터로 넘기고.