register 변수 예제

2) 레지스터 키워드는 포인터 변수와 함께 사용할 수 있습니다. 물론 레지스터에는 메모리 위치의 주소가 있을 수 있습니다. 아래 프로그램에는 문제가 없습니다. 그림 14.1은 자동 저장소 클래스뿐만 아니라 레지스터를 사용하는 main() 함수에 대한 코드 조각을 보여 주는 것입니다. 클래스 지정기는 선언의 형식 지정자 앞에 옵니다. 여기서 변수 a는 컴파일러에서 CPU 레지스터에 할당해야 하며 bb와 cc는 메모리에 저장소가 할당됩니다. 자동 클래스 지정기의 사용은 선택 사항입니다. C는 변수 및/또는 함수의 범위(가독성) 및 수명을 정의하는 데 사용되는 `저장소 클래스`의 개념을 가지고 있습니다. 위의 예에서는 정적 키워드를 사용하지 않고 출력은 다음과 같이 됩니다. 변수 선언 문에 데이터 형식 앞에 정적 키워드를 추가하여 정적 변수를 선언할 수 있습니다. 위에서 설명한 것처럼 레지스터 클래스 지정은 컴파일러에 대한 제안일 뿐입니다. 모든 구현에서 특정 컴퓨터에 사용할 수 있는 레지스터 수 또는 컴파일러에서 이러한 레지스터의 사용에 따라 이러한 변수에 대한 레지스터에 저장소를 할당하지는 않습니다.

자동 변수처럼 처리되고 메모리에 저장소가 제공될 수 있습니다. 자동 변수에는 로컬 범위가 있습니다. 함수에서 선언된 모든 변수는 기본적으로 자동입니다. 다른 함수에서도 동일한 변수를 선언할 수 있습니다. 변수 선언은 변수의 이름과 형식을 선언하지만 변수의 정의는 변수에 저장소가 할당됩니다. 동일한 변수에 대한 선언이 두 개 이상있을 수 있지만 변수에 대한 정의는 하나만 있을 수 있습니다. 대부분의 경우 변수 선언 및 정의는 동일합니다. 그러나 extern 지정기와 변수 이름 앞에 정의 하지 않고 변수를 선언할 수 있습니다. 정적 전역 변수에 대 한 기본 저장소 클래스입니다. 아래의 두 변수(개수 및 도로)에는 정적 저장소 클래스가 있습니다. 레지스터 변수에는 로컬 범위가 자동 변수로 있습니다. 마더보드의 레지스터 메모리 내에서 선언됩니다.

모든 산술 및 논리 연산은 이러한 레지스터 내에서 수행됩니다. `정적`은 함수 내에서 정의할 수도 있습니다. 이렇게 하면 변수는 컴파일 시간에 처음에 호출 간에 해당 값을 유지합니다. 컴파일 시간에 이니셜이 기리므로 초기 알리스테이션 값은 상수여야 합니다. 이것은 심각한 물건입니다 – 주의해서 밟습니다. 외부 변수에는 전역 범위가 있습니다. 모든 함수 외부에서 선언됩니다. 4) C 프로그램에서 레지스터 변수의 수에 제한이 없지만, 포인트 컴파일러는 레지스터에 일부 변수를 넣을 수 있으며 일부는 그렇지 않을 수 있습니다.

1) 레지스터 변수를 사용하여 연산자를 사용하는 경우 컴파일러는 오류 또는 경고를 줄 수 있습니다 (사용 중인 컴파일러에 따라 다름) 변수가 레지스터라고 말할 때 메모리 대신 레지스터에 저장될 수 있으며 레지스터의 주소에 액세스하는 것이 inv입니다. 알리드. 아래 프로그램을 사용해 보십시오. 정적 변수에는 로컬 범위가 자동 변수로도 있습니다. 여러 호출 중에 정적 변수는 이전 값을 유지합니다. CPU 레지스터에 저장된 변수는 항상 메모리에 저장된 변수보다 빠르게 액세스할 수 있습니다. 따라서 변수가 프로그램의 여러 위치에서 사용되는 경우 저장소 클래스를 레지스터로 선언하는 것이 좋습니다 `static`에 대한 하나의 매우 중요한 용도가 있습니다. 이 코드 비트를 고려하십시오.

char *Func (무효); main() { 문자 *Text1; 텍스트1 = 펑크(); } char *Func (무효) { char Text2[10]=»마틴»; 반환(Text2); } `Func`는 `Text2`가 시작되는 메모리 위치에 대한 포인터를 반환하지만 Text2에는 자동 저장소 클래스가 있으며 함수를 종료하면 사라지고 다른 것으로 덮어 쓸 수 있습니다. 대답은 정적 문자 텍스트[10]=»martin»을 지정하는 것입니다. `Text2`에 할당된 저장소는 프로그램인 경우 기간 동안 예약된 상태로 유지됩니다.

Next Post:
Previous Post: