Biến
Khai báo biến
Biến phải được khai báo trước khi sử dụng. Tên duy nhất được sử dụng để định danh biến. Để khai báo một biến, bạn phải chỉ định kiểu của nó và một tên duy nhất. Việc khai báo biến không phải là một toán tử.
Các kiểu đơn giản bao gồm:
char
,short
,int
,long
,uchar
,ushort
,uint
,ulong
– các số nguyên;color
– số nguyên đại diện cho màu RGB;datetime
– ngày và giờ, một số nguyên không dấu chứa số giây kể từ 0 giờ ngày 1 tháng 1 năm 1970;bool
– giá trị booleantrue
vàfalse
;double
– số thực dấu phẩy động có độ chính xác kép;float
– số thực dấu phẩy động có độ chính xác đơn;string
– chuỗi ký tự.
Ví dụ:
string szInfoBox;
int nOrders;
double dSymbolPrice;
bool bLog;
datetime tBegin_Data = D'2004.01.01 00:00';
color cModify_Color = C'0x44,0xB9,0xE6';
2
3
4
5
6
Các kiểu phức tạp hoặc kiểu ghép:
Cấu trúc là các kiểu dữ liệu tổng hợp, được xây dựng bằng cách sử dụng các kiểu khác.
struct MyTime
{
int hour; // 0-23
int minute; // 0-59
int second; // 0-59
};
...
MyTime strTime; // Biến của cấu trúc MyTime đã khai báo trước đó
2
3
4
5
6
7
8
Bạn không thể khai báo biến của kiểu cấu trúc cho đến khi bạn khai báo cấu trúc.
Mảng
Mảng là chuỗi được đánh chỉ số của dữ liệu cùng kiểu:
int a[50]; // Mảng một chiều gồm 50 số nguyên.
double m[7][50]; // Mảng hai chiều gồm bảy mảng, mỗi mảng gồm 50 số.
MyTime t[100]; // Mảng chứa các phần tử như MyTime
2
3
Chỉ số của mảng chỉ có thể là số nguyên. Không cho phép mảng có quá bốn chiều. Việc đánh số các phần tử mảng bắt đầu từ 0. Phần tử cuối cùng của mảng một chiều có số nhỏ hơn 1 so với kích thước mảng. Điều này có nghĩa là lời gọi phần tử cuối cùng của mảng gồm 50 số nguyên sẽ xuất hiện dưới dạng a[49]
. Điều tương tự áp dụng cho mảng đa chiều: Một chiều được đánh chỉ số từ 0 đến kích thước chiều trừ 1. Phần tử cuối cùng của mảng hai chiều trong ví dụ sẽ xuất hiện dưới dạng m[6][49]
.
Mảng tĩnh không thể được biểu diễn dưới dạng chuỗi thời gian, tức là hàm ArraySetAsSeries()
– hàm thiết lập truy cập các phần tử mảng từ cuối đến đầu – không thể áp dụng cho chúng. Nếu bạn muốn cung cấp quyền truy cập vào mảng giống như trong chuỗi thời gian, hãy sử dụng đối tượng mảng động.
Nếu có nỗ lực truy cập ngoài phạm vi mảng, hệ thống thực thi sẽ tạo ra lỗi nghiêm trọng và chương trình sẽ bị dừng.
Các phương thức tích hợp để làm việc với mảng
Các hàm từ phần Hàm Mảng cũng như các phương thức tích hợp có thể được sử dụng để xử lý mảng:
Phương thức | Tương tự | Mô tả |
---|---|---|
void array.Fill(const scalar value, const int start_pos=0, const int count=-1); | ArrayFill , ArrayInitialize | Điền mảng với giá trị được chỉ định |
void array.Free(); | ArrayFree | Giải phóng bộ đệm mảng động và đặt kích thước chiều bằng 0 |
int array.Resize(const int range0_size, const int reserve); | ArrayResize | Thiết lập kích thước mới trong chiều đầu tiên của mảng |
int array.Resize(const int range_sizes[], const int reserve); | ArrayResize | Thiết lập kích thước mới trong chiều đầu tiên của mảng |
int array.Print(); | ArrayPrint | Hiển thị giá trị mảng kiểu đơn giản trong nhật ký |
int array.Size(const int range=-1); | ArraySize , ArrayRange | Trả về số lượng phần tử trong toàn bộ mảng (range=-1) hoặc trong chiều mảng được chỉ định |
bool array.IsDynamic(); | ArrayIsDynamic | Kiểm tra xem mảng có phải là mảng động không |
bool array.IsIndicatorBuffer(); | Kiểm tra xem mảng có phải là bộ đệm chỉ báo không | |
bool array.IsSeries(); | ArrayIsSeries | Kiểm tra xem mảng có phải là chuỗi thời gian không |
bool array.AsSeries(); | ArrayGetAsSeries | Kiểm tra hướng đánh chỉ số của mảng |
bool array.AsSeries(const bool as_series); | ArraySetAsSeries | Thiết lập hướng đánh chỉ số trong mảng |
int array.Copy(const src_array[], const int dst_start, const int src_start, const int cnt); | ArrayCopy | Sao chép giá trị mảng sang mảng khác |
int array.Compare(const src_array[], const int dst_start, const int src_start, const int cnt); | ArrayCompare | Trả về kết quả so sánh hai mảng kiểu đơn giản hoặc cấu trúc tùy chỉnh |
int array.Insert(const src_array[], const int dst_start, const int src_start, const int cnt); | ArrayInsert | Chèn số phần tử được chỉ định từ mảng nguồn vào mảng nhận bắt đầu từ chỉ số được chỉ định |
int array.Remove(const int start_pos, const int count); | ArrayRemove | Xóa số phần tử được chỉ định khỏi mảng bắt đầu từ chỉ số được chỉ định |
int array.Reverse(const int start_pos, const int count); | ArrayReverse | Đảo ngược số phần tử được chỉ định trong mảng bắt đầu từ chỉ số được chỉ định |
bool array.Swap(array& arr[]); | ArraySwap | Trao đổi nội dung với mảng động khác cùng kiểu |
void array.Sort(sort_function); | ArraySort | Sắp xếp mảng số theo chiều đầu tiên |
int array.Search(scalar value, search_function); | ArrayBsearch | Trả về chỉ số của phần tử đầu tiên được phát hiện trong chiều đầu tiên của mảng |
int array.Find((scalar value, search_function); | Thực hiện tìm kiếm trong mảng bằng hàm được truyền và trả về chỉ số của phần tử đầu tiên được phát hiện | |
array array.Select(scalar value, search_function); | Thực hiện tìm kiếm trong mảng bằng hàm được truyền và trả về mảng với tất cả các phần tử được phát hiện |
Bộ chỉ định truy cập
Bộ chỉ định truy cập xác định cách trình biên dịch có thể truy cập các biến, thành viên của cấu trúc hoặc lớp.
Bộ chỉ định const
khai báo một biến là hằng số và không cho phép thay đổi biến này trong thời gian chạy. Chỉ được phép khởi tạo biến một lần khi khai báo.
Ví dụ:
int OnCalculate (const int rates_total, // kích thước của mảng price[]
const int prev_calculated, // các thanh đã xử lý ở lần gọi trước
const int begin, // nơi bắt đầu dữ liệu quan trọng
const double& price[] // mảng để tính toán
);
2
3
4
5
Để truy cập các thành viên của cấu trúc và lớp, sử dụng các bộ chỉ định sau:
public
– cho phép truy cập không hạn chế vào biến hoặc phương thức lớpprotected
– cho phép truy cập từ các phương thức của lớp này, cũng như từ các phương thức của các lớp kế thừa công khai. Các truy cập khác là không thể;private
– cho phép truy cập vào biến và phương thức lớp chỉ từ các phương thức của cùng một lớp.virtual
– chỉ áp dụng cho các phương thức lớp (không áp dụng cho phương thức của cấu trúc) và thông báo cho trình biên dịch rằng phương thức này nên được đặt trong bảng các hàm ảo của lớp.
Lớp lưu trữ
Có ba lớp lưu trữ: static
, input
và extern
. Các bộ修饰 này của lớp lưu trữ chỉ rõ cho trình biên dịch rằng các biến tương ứng được phân bố trong một khu vực bộ nhớ được cấp phát trước, được gọi là nhóm toàn cục. Ngoài ra, các bộ修饰 này chỉ ra việc xử lý đặc biệt dữ liệu biến. Nếu một biến được khai báo ở cấp độ cục bộ không phải là biến static
, bộ nhớ cho biến đó được cấp phát tự động tại ngăn xếp chương trình. Việc giải phóng bộ nhớ được cấp phát cho mảng không tĩnh cũng được thực hiện tự động khi vượt ra ngoài khu vực hiển thị của khối mà mảng được khai báo.
Xem thêm
Dữ liệu kiểu, Đóng gói và mở rộng kiểu, Khởi tạo biến, Phạm vi hiển thị và tuổi thọ của biến, Tạo và xóa đối tượng, Thành viên tĩnh của lớp