NYOJ 224 조명사 샤오밍
5387 단어 OJ
, , , , , , , , 。 ,
1 #include<stdio.h>
2 #include<string.h>
3 #include<stdlib.h>
4 int light[1000010];// , , , 。 , ,
5 int main()
6 {
7 int n,t,m,sum=0;
8 char str[10];
9 memset(light,0,sizeof(light));
10 scanf("%d%d",&n,&t);
11 while(t--)
12 {
13 scanf("%s",str);
14 if(strcmp(str,"CHANGE")==0)
15 {
16 scanf("%d",&m);
17 if(light[m]==0) {light[m]=1;sum++;}
18 else {light[m]=0;sum--;}
19 }
20 else printf("%d
",sum);
21 }
22 system("pause");
23 return 0;
24 }
추가 정보:
함수에 정의된 변수, 창고에 생성된 변수, 전역에 정의된 변수, 데이터 세그먼트에 생성된 변수.당신의 그룹이 너무 커서 창고가 넘쳐서 프로그램 오류가 발생할 수 있습니다.스택은 2M 크기로 알려져 있고 데이터 세그먼트는 매우 크며 얼마나 큰지는 시스템 환경과 관련이 있는 것 같다.수조가 함수에 정의되었을 때 차지하는 메모리는 창고 공간에서 나온다. 창고 공간은 프로세스를 만들 때 초기화되고 고정된 크기가 있으며 보통 몇 십 KB이기 때문에 너무 큰 수조는 창고 공간을 다 소모할 수 있다.
반면 글로벌 변수가 차지하는 데이터 세그먼트 공간은 32비트 시스템에서 4GB까지 커질 수 있다.전역 변수와 국부 변수는 같은 저장소에 있지 않습니다. 창고의 연속 빈 메모리는 c[100002]를 수용하기에 부족합니다. (너무 크지만 10002를 수용할 수 있기 때문에 뒤에 10002로 바꾸면 됩니다.) 그래서main에 놓고 실행할 때 오류가 발생했습니다. 전역 그룹으로 이동하여 전역 저장소에 저장하고 충분한 메모리가 있기 때문에 OK를 실행합니다.전역 변수를 사용하는 장점은 변수의 개수를 줄이고 실제 파라미터와 형식 파라미터의 데이터 전달으로 인한 시간 소모를 줄일 수 있다는 것이다.그러나 전역 변수를 사용하는 것도 많은 단점이 있다. (1) 전역 변수는 정적 저장소에 저장되고 프로그램이 실행될 때 메모리를 분배하며 프로그램이 끝날 때 이 메모리를 방출한다.국부 변수의 동적 분배, 동적 방출에 비해 생존 기간이 길기 때문에 너무 많은 전역 변수는 비교적 많은 메모리 단원을 차지한다.(2) 전역 변수는 함수의 봉인 성능을 파괴한다.앞에서 말한 바와 같이 함수는 블랙박스와 같아서 일반적으로 함수 매개 변수와 반환 값을 통해 입력과 출력을 하고 함수 내부는 상대적으로 독립을 실현한다.그러나 함수에서 전역 변수를 사용하면 함수 체내의 문장은 함수 매개 변수와 반환 값을 돌려 접근할 수 있다. 이런 상황은 함수의 독립성을 파괴하고 함수가 전역 변수에 의존하게 한다.이 함수의 이식성도 낮아졌다.(3) 전역 변수는 함수의 코드 가독성을 떨어뜨린다.여러 함수가 전역 변수를 사용할 수 있기 때문에 함수가 실행될 때 전역 변수의 값은 수시로 변화할 수 있어 프로그램의 오류와 디버깅에 매우 불리하다.따라서 만부득이하지 않으면 전역 변수를 사용하지 않는 것이 좋다.
글로벌 변수 및 로컬 변수: 링크:http://hi.baidu.com/huiweics/item/4f0845599701fc0ce6c4a571
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
9도 OJ 1116: 가감승제(기초문제)시간 제한: 1초 메모리 제한: 32메가바이트 특수 판제: 아니요 제출: 1466 해결 방법: 902 제목 설명: 입력한 연산자에 따라 입력한 정수에 대해 간단한 정수 연산을 진행한다.연산자는 더하기 +, 빼기 -,...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.