정적 변수와 일반 변수의 차이점은 무엇인가요? PHP를 처음 접하는 많은 친구들에게는 이해하기 쉽지 않을 수도 있습니다. 오늘은 PHP 친구의 정적 변수와 일반 변수의 차이점을 살펴보겠습니다. 필요하신 분은 참고하세요
php에서 정적 정적 변수와 일반 변수의 차이점
변수 앞에 static을 추가하여 정적 변수(static)를 만듭니다. 변하기 쉬운).
정적 변수와 일반 변수의 차이점은 비정적 전역 변수의 범위가 전체 소스 프로그램이라는 점입니다. 소스 프로그램이 여러 소스 파일로 구성된 경우 비정적 전역 변수는 각 소스 파일에 있습니다. . 효과적인. 정적 전역 변수는 범위를 제한합니다. 즉, 변수가 정의된 소스 파일 내에서만 유효하며 동일한 소스 프로그램의 다른 소스 파일에서는 사용할 수 없습니다. 정적 전역 변수의 범위는 하나의 소스 파일로 제한되고 해당 소스 파일의 함수에서만 공유할 수 있으므로 다른 소스 파일에서 오류를 피할 수 있습니다.
정적 변수와 일반 변수의 차이점:
정적 전역 변수와 일반 전역 변수의 차이점: 정적 전역 변수는 한 번만 초기화되어 초기화되지 않습니다. 다른 파일 단위에서 사용 참고;
정적 지역변수와 일반 지역변수의 차이점: 정적 지역변수는 한 번만 초기화되며 다음번에는 이전 결과값을 기준으로 초기화됩니다.
정적 지역변수와 일반 지역변수의 차이점 일반 함수: 메모리에는 정적 함수의 복사본이 하나만 있습니다. 일반 함수는 호출될 때마다 복사본을 유지합니다.
글로벌 변수 앞에 static 키워드를 추가하면 해당 글로벌 변수가 글로벌 정적 변수로 정의됩니다.
1) 메모리 내 위치 : 정적 저장 영역(정적 저장 영역은 전체 프로그램 실행 중에 존재함)
2) 초기화 : 초기화되지 않은 전역 정적 변수는 프로그램에 의해 자동으로 초기화됩니다( 자동 객체의 값은 명시적으로 초기화되지 않는 한 임의적입니다.
3) 범위: 전역 정적 변수는 선언된 파일 외부에서 볼 수 없습니다. 정확히 정의 지점부터 파일 끝까지.
정적 변수의 장점:
은 다른 파일에서 액세스할 수 없습니다. 충돌 없이 다른 파일에서 동일한 이름을 가진 변수를 수정할 수 있습니다.
메모리 내 위치 : 정적 저장 영역
초기화 : 초기화되지 않은 전역 정적 변수는 프로그램에 의해 자동으로 0으로 초기화됩니다(자동 객체의 값 명시적으로 초기화되지 않는 한 임의적입니다.
범위: 범위를 정의하는 함수나 명령문 블록이 끝나면 범위는 여전히 로컬 범위입니다.
참고: static을 사용하여 지역 변수를 수정하는 경우 지역 변수의 저장 위치를 원래 스택에서 정적 저장 영역으로 변경합니다. 그러나 지역 정적 변수는 범위를 벗어난 후에도 소멸되지 않고 프로그램이 끝날 때까지 메모리에 계속 남아 있지만 더 이상 액세스할 수 없습니다.
정적 변수를 사용하여 전역 변수를 수정하면 전역 변수의 범위가 변경되지만(선언된 파일 외부에는 표시되지 않음) 저장 위치는 변경되지 않으며 여전히 정적 변수에 있습니다. 저장 공간 .
일반 함수 예:
<?php function Test() { $w3sky = 0; echo $w3sky; $w3sky++; /*函数每次调用时都会将 $w3sky 的值设为 0 并输出 "0"。将变量加一的 $w3sky++ 没有其到效果,因为一旦退出本函数则变量 $w3sky 就不存在了。*/ } ?>
$w3sky 변수를 정적으로 정의하려면 코드는 다음과 같습니다.
<?php function Test() { static $w3sky = 0; echo $w3sky; $w3sky++; } //本函数每调用Test()都会输出 $w3sky 的值并加一。 ?>
정적 변수도 처리 방법을 제공합니다. 재귀 함수. 재귀 함수는 자신을 호출하는 메서드입니다. 재귀 함수를 작성할 때는 종료 없이 무한정 재귀할 수 있으므로 주의하십시오. 재귀를 중단할 수 있는 방법이 있는지 확인하십시오. 다음의 간단한 함수는 10까지 재귀적으로 계산하고 정적 변수 $count를 사용하여 중지 시점을 결정합니다. 정적 변수 및 재귀 함수의 예:
<?php function Test() { static $count = 0; $count++; echo $count; if ($count < 10) { Test(); } $count--; } ?>
참고: 정적 변수는 표현식으로 선언할 수 없습니다. $int = 1+2; 는 틀렸지만 static $int = 1;
읽어주셔서 감사합니다. 도움이 되기를 바랍니다. 이 사이트를 지원해 주셔서 감사합니다!