변수

변수 선언

변수를 사용하기 전에 선언해야 합니다. 변수를 식별하는 데 고유 이름이 사용됩니다. 변수를 선언하려면 변수 유형과 고유한 이름을 지정해야 합니다. 변수 선언은 연산자가 아닙니다.

단순 유형은 다음과 같습니다:

  • char, short, int, long, uchar, ushort, uint, ulong – 정수;
  • color – RGB 색상을 표현하는 정수;
  • datetime – 날짜 및 시간, 1970년 1월 1일 0시 이후 초 수를 포함하는 부호 없는 정수;
  • bool – 부울 값 거짓;
  • double – 배정밀도 부동 소수점 수;
  • float – 단정도 부동 소수점 수;
  • string – 문자열.

예제:

string szInfoBox;
int    nOrders;
double dSymbolPrice;
bool   bLog;
datetime tBegin_Data   = D'2004.01.01 00:00';
color    cModify_Color = C'0x44,0xB9,0xE6';

컴플렉스 또는 복합 유형:

구조는 다른 유형을 사용하여 구성된 복합 데이터 유형입니다.

struct MyTime
  {
   int hour;    // 0-23
   int minute;  // 0-59
   int second;  // 0-59
  };
...
MyTime strTime; // 이전에 선언된 구조 MyTime의 변수

구조를 선언하기 전에는 구조 유형의 변수를 선언할 수 없습니다.

배열

배열은 동일한 유형 데이터의 인덱싱된 순서입니다:

int    a[50];       // 50개의 정수로 구성된 1차원 배열.
double m[7][50];    // 7개의 배열로 구성된 2차원 배열,
                    // 각각 50개의 숫자로 구성되어 있음.
MyTime t[100];      // MyTime과 같은 요소가 포함된 배열

배열 색인은 정수만 사용할 수 있습니다. 4차원 배열만 허용됩니다. 배열 요소의 번호 지정은 0으로 시작합니다. 1차원 배열의 마지막 요소는 배열 크기보다 1 작은 숫자를 가집니다. 즉, 50개의 정수로 구성된 배열의 마지막 요소에 대한 호출이 a[49]로 나타납니다. 다차원 배열에 대해서도 마찬가지입니다: 차원은 0에서 치수 크기-1까지 인덱싱됩니다. 예제에서 2차원 배열의 마지막 요소는 m[6][49]로 나타납니다.

정적 배열을 시계열로 나타낼 수 없습니다. 즉, 배열 요소에 대한 액세스를 처음부터 설정하는 ArraySetAsSeries() 함수를 정적 배열에 적용할 수 없습니다. 시계열에서와 동일한 배열에 대한 액세스를 제공하려면 동적 배열 객체를 사용하십시오.

어레이 범위를 벗어난 액세스 시도가 있을 경우 실행 중인 하위 시스템에서 심각한 오류가 발생하고 프로그램이 중지됩니다.

배열 작업을 위한 내장 메서드 #

Array Functions 섹션의 함수와 내장 메서드를 사용하여 배열을 처리할 수 있습니다:

메서드

Analog

설명

void array.Fill(const scalar value, const int start_pos=0, const int count=-1);

ArrayFill, ArrayInitialize

지정된 값으로 배열을 채웁니다.

void array.Free();

ArrayFree

동적 배열 버퍼를 해제하고 0차원 크기를 0(zero)으로 설정합니다.

int array.Resize(const int range0_size, const int reserve);

int array.Resize(const int range_sizes[], const int reserve);

ArrayResize

일차원 배열에서 새로운 크기를 설정합니다.

int array.Print();

ArrayPrint

저널에 단순형 배열 값을 표시합니다.

int array.Size(const int range=-1);

ArraySize, ArrayRange

전체 배열(범위=-1) 또는 지정된 배열 차원의 요소 수를 반환합니다.

bool array.IsDynamic();

ArrayIsDynamic

배열이 동적인지 체크합니다

bool array.IsIndicatorBuffer();

 

배열이 지표의 버퍼인지 체크합니다

bool array.IsSeries();

ArrayIsSeries

배열이 타임시리즈인지 체크합니다

bool array.AsSeries();

ArrayGetAsSeries

배열 인덱싱 방향을 체크합니다

bool array.AsSeries(const bool as_series);

ArraySetAsSeries

배열에서 인덱싱 방향을 설정합니다

int array.Copy(const src_array[], const int dst_start, const int src_start, const int cnt);

ArrayCopy

배열 값을 다른 배열에 복사합니다

int array.Compare(const src_array[], const int dst_start, const int src_start, const int cnt);

ArrayCompare

두 개의 단순 유형 배열 또는 사용자 정의 구조를 비교한 결과를 리턴합니다.

int array.Insert(const src_array[], const int dst_start, const int src_start, const int cnt);

ArrayInsert

소스 배열의 지정된 수의 요소를 지정된 인덱스에서 시작하여 수신하는 배열에 삽입합니다.

int array.Remove(const int start_pos, const int count);

ArrayRemove

지정된 인덱스로 시작하는 배열에서 지정된 수의 요소를 제거합니다.

int array.Reverse(const int start_pos, const int count);

ArrayReverse

지정된 인덱스로 시작하는 배열의 지정된 수의 요소를 반전시킵니다.

bool array.Swap(array& arr[]);

ArraySwap

콘텐츠를 동일한 다른 동적 배열과 교환합니다 type

void array.Sort(sort_function);

ArraySort

일차원을 기준으로 숫자형 배열을 정렬합니다.

int array.Search(scalar value, search_function);

ArrayBsearch

일차원 배열에서 먼저 감지된 첫 번째 요소의 인덱스를 반환합니다.

int array.Find((scalar value, search_function);

 

전달된 함수를 사용하여 배열에서 검색을 수행하고 최초로 감지된 요소의 인덱스를 반환합니다.

array array.Select(scalar value, search_function);

 

전달된 함수를 사용하여 배열에서 검색을 수행하고 감지된 모든 요소가 포함된 배열을 반환합니다.

 

액세스 지정자

액세스 지정자는 컴파일러에서 변수, 구조 또는 클래스의 멤버에 액세스하는 방법을 정의합니다.

const 지정자는 변수를 상수로 선언하며 런타임 중에 이 변수를 변경할 수 없습니다. 변수를 선언할 때 변수를 단일 초기화할 수 있습니다.

예제:

int OnCalculate (const int rates_total,      // price[] 배열의 크기
                 const int prev_calculated,  // 이전 호출에서 처리된 막대
                 const int begin,            // 중요한 데이터가 시작되는 곳
                 const double& price[]       // 계산할 배열
   );

구조물과 클래스의 멤버에 액세스하려면 다음 한정자를 사용합니다:

  • public – 변수 또는 클래스 메서드에 제한 없이 액세스할 수 있습니다
  • protected – 에서는 이 클래스의 메서드와 공개적으로 상속된 클래스의 메서드에서 액세스할 수 있습니다. 다른 접근은 불가합니다;
  • private – 은 같은 클래스의 메서드에서만 변수 및 클래스 메서드에 액세스할 수 있도록 허용합니다.
  • virtual – 는 클래스 메서드에만 적용되며(구조 메서드에는 적용되지 않음) 이 메서드는 클래스의 가상 함수 테이블에 배치되어야 함을 컴파일러에 알려줍니다.

저장 클래스

이것들은 세가지 스토리지 클래스입니다: static, inputextern. 스토리지 클래스의 이러한 수정자는 해당 변수가 사전 할당된 메모리 영역에 분산되어 있음을 컴파일러에 명시적으로 나타내며, 이를 글로벌 풀이라고 합니다. 게다가, 이 수식어들은 변수 데이터의 특별한 처리를 나타냅니다. 로컬 수준에서 선언된 변수가 정적 변수가 아닌 경우 해당 변수의 메모리는 프로그램 스택에서 자동으로 할당됩니다. 정적 어레이가 선언된 블록의 가시성 영역을 벗어나면 정적 어레이에 할당된 메모리 여유도 자동으로 수행됩니다.

더 보기

데이터 유형, 유형의 캡슐화 및 확장성,변수 초기화, 가시성 범위 및 변수 수명, 객체 생성 및 삭제, 클래스의 정적 멤버