묻고답하기

<1번소스>
1행 <?
2행 function sum(){
3행              $a=10;
4행              static $a=20;
5행              $a++;  
6행              echo $a."<br>";  
7행              }
8행   sum();
9행   sum();
10행 sum();
11행 ?>

<1번소스 결과>
21
22
23

1번 소스의 경우에는 3행에 $a값이 할당된 후에 다시 4행에서 static선언자를 사용하여 $a에
20이라는 값을 재할당하였어요, static이라는 선언자는 처음에 한 번만 변수에 할당된 값을
사용하고, 그 이후 부터는 메모리에 저장되어 있는 변수 값을 사용하는 것이라는 답변을 받았거든요...
그래서 8행에서 sum()함수를 호출했을 때 $a의 값은 21이 나오는구나...
그리고 9행에서 sum()함수를 다시 호출했을 때 3행의 $a=10이라는 값을 재할당 받지 않고,
메모리에 저장되어 있는 21이라는 값을 사용하여 $a의 값이 22가 나오는 구나...
마찬가지로 10행에서 sum()함수를 또 다시 호출하였을 때도 마찬가지 경우로 23이 나오는
구나...이렇게 생각들더라구요...
그래서 static이 while구문에서 사용됐을 때도 마찬가지의 결론이 나올까? 하고 다음과 같이
코딩을 했어요..


<2번소스>
1행 <?
2행 $b=20;
3행 while($b<=23){
4행              $b=10;  
5행              static $b=20;  
6행              $b++;    
7행              echo $b."<br>";  
8행              }
9행 ?>

<2번소스 결과>
21
11
11
11
.
.
.
(11값만이 무한루프됨)

이번에는 1번소스와는 달리 이런결과가 나오네요..ㅡㅡ;;
1번 소스에서 처럼 4행에 $b에 10이 할당한 후에 다시 5행에서 static 선언자를 사용하여
$b 에 20이 재할당되었으므로 1번째 실행에서는 21이라는 값이 출력된 것이고...
그 다음에 static의 특성에 의해 4행에서 $b에 10이 할당되더라도 이 값을 사용하지 않고,
메모리에 저장되어 있는 21이라는 값을 사용하여 2번째 실행되었을 때 22이라는 값이 출
력되고 3번째 실행되었을 때는 23이라는 값이 출력되어야 하는 것이 아닌가요??

아~ 많은 분들께서 좋은 답변으로 도와주시는데도, 이렇게 이해를 못하는 제가 이제는
부끄럽습니다. ...ㅡㅡ;
그래도 답변 해주시면 더할나위 없이 감사하구요...(__);;
글쓴이 제목 최종 글
XE 공지 글 쓰기,삭제 운영방식 변경 공지 [16] 2019.03.05 by 남기남
박봉수 제로보드 DB백업후 복구하는 방법 좀 상세히 알려주세요. (왕~ 초보)  
심지훈 웹프로그래머가 되기위해선 무엇을 준비해야하나요?? 선배님들의 고언부탁드립니다.. [2] 2007.08.10
왕초보 혹시 뽀림닷컴이 어딘지 아나여??  
이인철 죄송한데요....  
배재혁 포토샵 7.0에서 한글이 안써져요. [3] 2007.08.10
서버공부중 iframe 내용에 맞게 자동으로 크기 조절하기  
nemo PHP.TABLE 생성 [2] 2007.08.10
백승기 도와주세요 ㅜ.ㅜ [2] 2007.08.10
Violet! MSN 파일 보내기가 안되여.. [1] 2007.08.10
박선영 이런질문 드려서 정말 죄송합니다... [2] 2007.08.10
김지현 여기서 이런거 질문해도 될런지,, 허나 꼭 답변을,,, [1] 2007.08.10
최순병 노프레임구현시에 화면이 다르게뜨는현상이 생겨요..ㅡㅡ [1] 2007.08.10
탱자 테이블 관련 질문입니다. 급해요~ [5] 2007.08.10
‥허접‥-ㅅ-γ 아바타 플러그인은 어떻게 설치 해요??  
전요한 플래시 // 프리로더는 어떻게 작동하는건가요 ??  
steelheart 04b 시리즈 폰트에 대해서 [2] 2007.08.10
김민성 링크가 안되내요.? [2] 2007.08.10
김영준 링크 밑줄 없애고 마우스오버시 색깔변하는거 좀... [1] 2007.08.10
taeho Mysql 퀴어리를 써서 join한지 6달되면 db로 부터 지우는것 어떻게 [1] 2007.08.10
전요한 플래시 // 액션 스크립트로 다른 SWF 내에 인스턴스도 조종할수 있나여 ??  
김선일 Windows 2000 Sever 에서 어케 퍼미션을 707로 바꾸져? [3] 2007.08.10
에지 FONTS 폴더 원상복구 [3] 2007.08.10
김진아 홈페이지 용량에 관한 질문입니다... [2] 2007.08.10
정세영 폼으로 넘길때 [1] 2007.08.10
현배♡ 자신의 홈이 어디에 링크가 걸렸는지 알기 위해서는..  
키리에 노프레임에서;; [2] 2007.08.10
박윤희 아이프레임을 사용해서 제로보드를 넣었거든요.오른쪽 바 색상을 좀 예쁘게 바꾸고 싶은데... [2] 2007.08.10
박윤희 [re] 아이프레임을 사용해서 제로보드를 넣었거든요.오른쪽 바 색상을 좀 예쁘게 바꾸고 싶은데...  
데이 테이블에 대해 질문좀 드릴께요.... [8] 2007.08.10
taeho Outlook에서 보내는 메일서버(smtp) 설정에 관하여 [3] 2007.08.10