HCMKHOA HỆ THỐNG THÔNG TIN QUẢN LÝ MƠN: CƠ SỞ LẬP TRÌNH ĐỀ TÀI: TÌM HIỂU VỀ NGƠN NGỮ LẬP TRÌNH C# Thành phố Hồ Chí Minh, tháng 01 năm 2023 Giảng viên b môn: ộSinh viên thực hiện: Trang
TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C#
Khái niệm
C# (hay C sharp) là một ngôn ngữ lập trình đơn giản, được phát triển bởi đội ngũ kỹ sư của Microsoft vào năm 2000, trong đó người dẫn đầu là Anders Hejlsberg và Scott Wiltamuth C# là ngôn ngữ lập trình hiện đại, hướng đối tượng và nó được xây dựng trên nền tảng của hai ngôn ngữ mạnh nhất là C++ và Java C# được thiết kế cho Common Language Infrastructure (CLI), mà gồm Executable Code và Runtime Environment, cho phép chúng ta sử dụng các ngôn ngữ high- level đa dạng trên các nền tảng và cấu trúc máy tính khác nhau.
Mục đích ra đời
• Phát triển ứng dụng trên nền tảng NET: C# được thiết kế để làm việc chặt chẽ với NET Framework, một nền tảng phần mềm của Microsoft, để phát triển ứng dụng Windows và web hiệu quả C# trở thành ngôn ngữ chính trong hệ sinh thái NET
• Tính Tương Thích và Bảo Quản Đầu Tư: C# được tạo ra để cung cấp một lựa chọn hiện đại và an toàn cho việc phát triển ứng dụng, đồng thời duy trì khả năng tương thích với các ngôn ngữ và công nghệ trước đó như C, C++, và COM Điều này giúp bảo vệ đầu tư của các tổ chức đã phát triển ứng dụng bằng các ngôn ngữ này
• An Toàn và Dễ Sử Dụng: C# được thiết kế với kiểu dữ liệu an toàn và cú pháp dễ đọc, giảm thiểu lỗi thời biên dịch và thời chạy, đồng thời tối ưu hóa sự dễ sử dụng cho các lập trình viên
• Hỗ Trợ Lập Trình Hướng Đối Tượng: C# hỗ trợ lập trình hướng đối tượng, giúp tổ chức mã nguồn một cách có tổ chức, tái sử dụng mã nguồn, và tăng tính linh hoạt trong phát triển ứng dụng
• Hỗ Trợ Phát Triển Ứng Dụng Đa Nền Tảng: Trong các phiên bản sau này, C# mở rộng sự hỗ trợ cho việc phát triển ứng dụng đa nền tảng thông qua dự án NET Core và NET 5 trở đi
Ph ầ n 2 vietjet 1 - its kind of not… buh nance 100% (1) 26
Macmillan - Ielts Introduction Stude… buh nance 60% (15) 68
Nhom2 Pttcdnài phân tích tài chính… buh nance 100% (11)18
• Tóm lại, mục đích chính của việc phát triển ngôn ngữ C# là tạo ra một ngôn ngữ linh hoạt, an toàn, và dễ sử dụng để hỗ trợ phát triển ứng dụng trên nền tảng Microsoft
• C# là một ngôn ngữ lập trình đa năng, mạnh mẽ được phát triển bởi Microsoft Ngôn ngữ này đã trở thành một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới
• Theo một khảo sát được thực hiện bởi **Stack Overflow** vào năm 2021, C# là ngôn ngữ lập trình phổ biến thứ tư trên toàn cầu C# được sử dụng để phát triển một loạt các ứng dụng, từ phần mềm quy mô lớn đến các chương trình đơn giản C# cũng được thiết kế để phù hợp với việc viết các ứng dụng cho cả hai hệ thống: hosted và nhúng Các tính năng chính của C# bao gồm thu gom rác tự động, thư viện chuẩn, assembly, lập trình hướng sự kiện, lập trình hướng tác vụ, lập trình hướng chức năng, lập trình hướng đối tượng, lập trình hướng đa luồng, lập trình hướng thủ tục, lập trình hướng thể hiện và lập trình hướng đa dạng
Ngôn ngữ lập trình C# (C Sharp) được sử dụng rộng rãi bởi nhiều đối tượng - trong cộng đồng phát triển phần mềm Dưới đây là một số đối tượng chính mà sử dụng C#:
• Lập Trình Viên Doanh Nghiệp (Enterprise Developers): C# là một ngôn ngữ rất phổ biến trong lĩnh vực doanh nghiệp và phát triển ứng dụng doanh nghiệp Do Microsoft là một trong những đối tác chủ chốt trong lĩnh vực này, nên C# thường được ưa chuộng khi phát triển các ứng dụng doanh nghiệp trên nền tảng Windows
• Phát Triển Ứng Dụng Windows: C# là một lựa chọn tự nhiên cho việc phát triển ứng dụng Windows, bao gồm cả các ứng dụng desktop và ứng dụng Universal Windows Platform (UWP)
• Phát Triển Ứng Dụng Web: C# kết hợp với ASP.NET để tạo ra một môi trường phát triển web mạnh mẽ Lập trình viên sử dụng C# để xây dựng ứng dụng web, từ trang web tĩnh đến ứng dụng web động và phức tạp
Reading TEST 3 - ôn anh văn buh nance 100% (3)13
Đố i tư ợng sử dụng
Ngôn ngữ lập trình C# (C Sharp) được sử dụng rộng rãi bởi nhiều đối tượng - trong cộng đồng phát triển phần mềm Dưới đây là một số đối tượng chính mà sử dụng C#:
• Lập Trình Viên Doanh Nghiệp (Enterprise Developers): C# là một ngôn ngữ rất phổ biến trong lĩnh vực doanh nghiệp và phát triển ứng dụng doanh nghiệp Do Microsoft là một trong những đối tác chủ chốt trong lĩnh vực này, nên C# thường được ưa chuộng khi phát triển các ứng dụng doanh nghiệp trên nền tảng Windows
• Phát Triển Ứng Dụng Windows: C# là một lựa chọn tự nhiên cho việc phát triển ứng dụng Windows, bao gồm cả các ứng dụng desktop và ứng dụng Universal Windows Platform (UWP)
• Phát Triển Ứng Dụng Web: C# kết hợp với ASP.NET để tạo ra một môi trường phát triển web mạnh mẽ Lập trình viên sử dụng C# để xây dựng ứng dụng web, từ trang web tĩnh đến ứng dụng web động và phức tạp
Reading TEST 3 - ôn anh văn buh nance 100% (3)13
• Lập Trình Viên Điện Toán Đám Mây (Cloud Developers): Cùng với sự gia tăng của các dịch vụ đám mây và nền tảng Azure của Microsoft, C# trở thành lựa chọn phổ biến cho việc phát triển ứng dụng đám mây
• Nhóm Phát Triển Ứng Dụng Đa Nền Tảng: Với sự mở rộng của NET Core và NET 5 trở đi, C# cũng được sử dụng bởi các nhóm phát triển muốn xây dựng ứng dụng đa nền tảng, bao gồm cả Linux và macOS
• Những đối tượng này sử dụng C# vì tính linh hoạt, hiệu suất tốt, tính tương thích với nền tảng Microsoft, và sự hỗ trợ mạnh mẽ từ cộng đồng và công cụ phát triển của Microsoft như Visual Studio.
Ưu điểm
C# có rất nhiều ưu điểm nổi bật như:
• Gần gũi với các ngôn ngữ lập trình thông dụng như C++, Java, Pascal
• Xây dựng dựa trên nền tảng của các ngôn ngữ lập trình mạnh nên thừa hưởng những ưu điểm của chúng
• Cải tiến các khuyết điểm của C/C++ như con trỏ, hiệu ứng phụ,
• Dễ dàng tiếp cận, dễ phát triển
• Được sự chống lưng của NET Framework.
Nhược điểm
• Nhược điểm lớn nhất của C# là chỉ chạy trên nền Windows và có cài NET Framework Thao tác đối với phần cứng yếu hơn so với ngôn ngữ khác, hầu hết phải dựa vào windows.
ĐẶ C ĐIỂM C ỦA NGÔN NGỮ LẬP TRÌNH C#
Các kiểu dữ ệu cơ sở li
2.1.1 Khái niệm kiểu dữ liệu:
Kiểu dữ liệu (data type) là một tập hợp các giá trị mà một biến thuộc kiểu đó có thể nhận cùng một số phép toán có thể thực hiện
Trong C#, kiểu dữ liệu được phân ra làm 3 loại chính như sau:
• Kiểu dữ liệu giá trị (kiểu này đươc phân ra làm 2 loại là kiểu dữ liệu đã được đinh nghĩa và kiểu dữ liệu do người dùng định nghĩa)
• Kiểu dữ liệu tham chiếu
Figure 1 Ảnh minh họa về phân loại các kiểu dữ ệu trong C#li
2.1.2 Kiểu dữ liệu giá trị
Như đã được đề cập ở bên trên, kiểu dữ liệu giá trị được phân làm 2 loại chính:
• Kiểu dữ liệu đã được định nghĩa (predefined data types)
• Kiểu dữ liệu do người dùng định nghĩa (user defined data types) Ở phần này chúng ta chỉ tìm hiểu về các kiểu dữ ệu đã đượli c định nghĩa trong C#
Chúng ta có thể bắt gặp số nguyên ở bất cứ đâu, trong bất kì chương trình máy tính nào Vậy nên trong mỗi một ngôn ngữ lập trình không thể ếu các kiểu số nguyên thi
Table 1 Các kiểu số nguyên trong C#
Kiểu s nguyên ố Kích thước (s byte)ố Miền giá tr ị short 2 byte -32,768 … 32,767 unsigned short 2 byte 0 … 65,535
5 int 4 byte -2,147,483,648 … 2,147,483,647 unsigned int 4 byte 0 … 4,294,967,295 long 8 byte -9,223,372,036,854,775,808…
Trong các chương trình máy tính, số ực cũng quan trọng không kém khi người ta hay th sử dụng số ực làm kết quả của một phép chia, xác suất, đánh giá (heuristic) Các giá th trị kiểu số ực còn có một tên g i khác là “sth ọ ố chấm phẩy động”
Table 2 Các kiểu số ực trong C#th
Kiểu số thực Kích thước (số byte) Miền giá trị Độ chính xác float 4 byte -3.4 x 10 38 tới 3.4 x 10 38 7 chữ số double 8 byte ±5.0 x 10 -324 tới ±1.7 x 10 308 15 chữ số decmical 16 byte (-7.9 x 10 28 tới 7.9 x 10 ) / 10 28 0 tới 228 chữ số
• Kiểu ký tự và logic
Chúng ta bắt gặp các chữ cái mọi lúc mọi nơi và câu trả lời đúng sai mọi lúc mọi nơi Vậy nên những kiểu chữ cái hay là các kiểu logic là vô cùng cần thiết
Table 3 Các kiểu ký tự và logic trong C#
Kiểu dữ liệu Kích thước (số byte) Miền giá trị char (kiểu ký tự) 2 byte Bao gồm các chữ cái Unicode bool (kiểu logic) 1 byte true và false (tương đương với đúng hoặc sai)
Hằng và biến
Biến trong mọi ngôn ngữ lập trình là cần phải có, chúng được sử dụng để lưu trữ các giá trị trả về từ các hàm, lưu trữ giá trị của các biểu thức phép tính, và đặc biệt là được sử dụng để lưu trữ giá trị của người dùng nhập vào, xuất ra từ chính biến đó
Biến (variable) là đại lượng có thể thay đổi được giá trị, được khai báo trong chương trình với cú pháp sau đây:
= [];
Lưu ý: phần trong ngoặc [] có thể là không có, tức là có thể có có thể không.
Một số ví dụ cho việc khai báo biến trong C# int a; int b = 10; string s = "Bai tap nhom 13"; double d = 7.10; int a, b = 10, c = 7, d;
Hằng (constant) là đại lượng có giá trị không đổi, được khai báo trong chương trình với cú pháp sau đây: const = ;
Một số ví dụ về khai báo hằng trong C#: const int tuoi = 15; const double pi = 3.14; const string s = "Thanh vien nhom 13 gom 2 nguoi"; const int a = 7, b = 8, c = 10;
Biểu thức và toán tử
Biểu thức là công thức tính toán bao gồm các toán hạng (operand) và toán tử (operator) tương ứng Các toán hạng có thể là một biến, hằng, lời gọi hàm, một biểu thức con khác đặt trong cặp ngoặc đơn, hình thành nên một biểu thức phức hợp Trong ngôn ngữ lập trình C#, biểu thức luôn trả về một giá trị
Các loại biểu thức thông dụng:
• Biểu thức số học, ví dụ: 3 + 5, x + y
• Biểu thức logic, ví dụ: x > 3, x > y
• Toán tử số học trong C#
Bảng dưới liệt kê các toán tử số học được hỗ trợ bởi ngôn ngữ C# Giả sử biến A giữ giá trị 10, biến B giữ 20 thì ta được bảng sau:
Table 4 Toán tử số học trong C#
Toán tử Miêu tả Ví dụ
+ Thêm hai toán hạng A + B sẽ cho kết quả là 30
- Trừ giá tr toán h ng hai t ị ạ ừtoán hạng đầu A - B sẽ cho kết quả -10 là
* Nhân hai toán hạng A * B sẽ cho k t qu là 200 ế ả
/ Chia l y ph n nguyên hai toán hấ ầ ạng B / A sẽ cho kết quả là 2
% Chia l y phấ ần dư B % A sẽ cho k t qu là 0 ế ả
++ Lượng gia giá tr toán hị ạng thêm 1 đơn vị A++ sẽ cho kết quả là 11 Lượng giảm giá tr toán hạng mị ột đơn vị A s cho kẽ ết quả là 9
• Toán tử quan hệ trong C#
Bảng dưới đây liệt kê các toán tử quan hệ được hỗ trợ bởi ngôn ngữ C# Giả sử biến A giữ giá trị 10, biến B giữ 20 thì ta được bảng sau:
Table 5 Toán tử quan hệ trong C#
Toán tử Miêu tả Ví dụ
== Kiểm tra n u 2 toán h ng b ng nhau hay khôế ạ ằ
Nếu bằng thì điều ki n là true ệ
!= Kiểm tra 2 toán h ng có giá tr khác nhau hạ ị không N u không bế ằng thì điều ki n là true ệ
> Kiểm tra n u toán h ng bên trái có giá tr lế ạ ị ớ hơn toán hạng bên phải hay không Nếu lớ hơn thì điều kiện là true
< Kiểm tra n u toán h ng bên trái nhế ạ ỏ hơn toá h ng bên ph i hay không N u nhạ ả ế ỏ hơn thì true
>= Kiểm tra n u toán h ng bên trái có giá tr lế ạ ị ớ hơn hoặc bằng giá trị của toán hạng bên ph hay không Nếu đúng là true
Toán t d ch ph i Giá tr toán hử ị ả ị ạng trái đượ d ch chuy n sang ph i b i sị ể ả ở ố các bit được xá định b i toán hạng bên phải ở
15, t c là 0000 1111ứ (dịch sang phải hai bit)
• Toán tử quan hệ trong C#
Dưới đây là một số toán tử hỗn hợp quan trọng gồm sizeof, typeof ? : và được hỗ trợ bởi ngôn ngữ C#
Table 10 Toán tử quan hệ trong C#
Toán tử Miêu tả Ví dụ sizeof() Trả v kích c c a m t ki u dề ỡ ủ ộ ể ữ liệu sizeof(int), trả v 4 ề typeof() Trả v ki u cề ể ủa mộ ớt l p typeof(StreamReader);
& Trả v ề địa chỉ ủa mộ c t bi n ế &a; trả v ề địa chỉthực s cự ủa biến
* Trỏ ớ t i m t biộ ến *a; t o con tr v i tên là a tạ ỏ ớ ới một biế
Nếu Condition là true ? Thì giá tr Xị Nếu không thì Y
Is Xác định đối tượng là một kiểu cụ thể hay không
If (Ford is Car) // Ki m tra n u Ford lể ế mộ ốt đ i tượng của lớp Car
As Ép ki u mà không t o mể ạ ộ exception nếu vi c ép kiệ ểu thấ b i ạ
Object obj = new StringReader("Hello");
• Thứ tự ưu tiên toán tử trong C#
Thứ tự ưu tiên toán tử trong C# xác định cách biểu thức được tính toán Ví dụ, toán tử nhân có quyền ưu tiên hơn toán tử cộng, và nó được thực hiện trước
Ví dụ: x = 7 + 3 * 2; ở đây, x được gán giá trị 13, chứ không phải 20 bởi vì toán tử * có quyền ưu tiên cao hơn toán tử +, vì thế đầu tiên nó thực hiện phép nhân 3 * 2 và sau đó thêm với 7
Bảng dưới đây liệt kê thứ tự ưu tiên của các toán tử Các toán tử với quyền ưu tiên cao nhất xuất hiện trên cùng của bảng, và các toán tử có quyền ưu tiên thấp nhất thì ở bên dưới cùng của bảng Trong một biểu thức, các toán tử có quyền ưu tiên cao nhất được tính toán đầu tiên
Table Thứ tự ưu tiên các toán tử11
Loại Toán tử Thứ t ự ưu tiên
Unary + - ! ~ ++ - - (type)* & sizeof Phải sang trái
Tính nhân * / % Trái sang phải
Tính cộng + - Trái sang phải
Dịch chuyển > Trái sang phải
Quan hệ < >= Trái sang phải
Cân b ng ằ == != Trái sang phải
Phép AND bit & Trái sang phải
Phép XOR bit ^ Trái sang phải
Phép OR bit | Trái sang phải
Phép AND logic && Trái sang ph i ả
Phép OR logic || Trái sang phải Điều ki n ệ ?: Phải sang trái
Trong C#, chúng ta cũng có hai loại chuyển đổi kiểu: ngầm định và rõ ràng
• Chuyển đổi kiểu ngầm định (Implicit conversion): Đây là loại chuyển đổi tự động xảy ra khi trình biên dịch chuyển đổi một kiểu dữ liệu sang một kiểu khác mà không cần cú pháp bổ sung
Ví dụ: Gán một số nguyên cho một số thực là một chuyển đổi ngầm định và tất nhiên không có mất mát dữ liệu int value1 = 10; double value2 = value1; // Chuyển đổi ngầm định từ int sang double
• Chuyển đổi kiểu rõ ràng (Explicit conversion): Đây là loại chuyển đổi mà có thể gây ra mất mát dữ liệu Chuyển đổi rõ ràng chuyển đổi lớp cơ sở thành lớp dẫn xuất
Ví dụ: Chuyển đổi từ double sang int không được phép mà không cần ép kiểu double value2 = 10.0; int val3 = (int) val2; // Chuyển đổi rõ ràng từ double sang int
Câu lệnh
Câu lệnh (statement, instruction) là một chỉ ị ực tiếp, hoàn chỉnh nhằm ra lệnh cho th tr máy tính thực hiện một số tác vụ nhất định nào đó Trong ngôn ngữ lập trình C#, các câu lệnh cách nhau bằng dấu chấm phẩy (;) Trình biên dịch bỏ qua các khoảng trắng, dấu tab và ký tự xuống dòng chen giữa lệnh
Có 3 loại câu lệnh trong C#:
• Câu lệnh đơn (Single line statements): Đây là các câu lệnh được kết thúc bằng - dấu chấm phẩy (;)
Ví dụ: int x = 10; // Câu lệnh đơn
• Câu lệnh phức (Block statements): Đây là các câu lệnh được bao bởi cặp dấu ngoặc nhọn {}
{ int x = 10; // Câu lệnh đơn trong câu lệnh phức
Console.WriteLine(x); // Câu lệnh đơn khác trong câu lệnh phức
• Câu lệnh điều khiển (Control statements): Đây là các câu lệnh được xây dựng từ các cấu trúc điều khiển như rẽ nhánh (if, switch), vòng lặp (for,while, do, foreach), và nhảy (break, continue, return, throw, goto)
Console.WriteLine("x khong lon hon y");
Nhập - Xuất
Trong C#, bạn có thể sử dụng các phương thức của lớp Console để thực hiện việc nhập và xuất dữ liệu
Xuất dữ liệu: Để hiển thị dữ liệu ra cửa sổ dòng lệnh, bạn sử dụng phương thức Console.WriteLine() hoặc Console.Write()
Console.Write("Hello, World!"); // Xuất chuỗi "Hello, World!" ra màn hình Console.WriteLine("Hello, World!"); // Xuất chuỗi "Hello, World!" ra màn hình và xuống dòng
Nhập dữ liệu: Để đọc dữ liệu từ cửa sổ dòng lệnh, bạn sử dụng phương thức Console.ReadLine(), Console.Read(), hoặc Console.ReadKey()
Ví dụ: string input = Console.ReadLine(); // Đọc một dòng từ cửa sổ dòng lệnh int key = Console.Read(); // Đọc một ký tự từ cửa sổ dòng lệnh và trả về mã ASCII của ký tự đó
ConsoleKeyInfo keyInfo = Console.ReadKey(); // Đọc một phím từ cửa sổ dòng lệnh và trả về thông tin về phím đó
CHƯƠNG TRÌNH CON
Khái niệm
Trong ngôn ngữ lập trình C#, "chương trình con" thường được gọi là "phương thức" (method) Một phương thức là một khối mã thực hiện một nhiệm vụ cụ thể Phương thức trong C# giúp chia nhỏ chương trình thành các đơn vị nhỏ, dễ quản lý, và có th tái sể ử dụng.
Đặc điểm
• Một chương trình con trong C# bao gồm một tên, danh sách các tham số đầu vào (nếu có), và một khối mã lệnh Một chương trình con có thể ả về một giá trị tr hoặc không trả về giá trị nào Để khai báo một chương trình con trong C#, ta sử dụng từ khóa void để ỉ ra ch rằng chương trình con không trả về giá trị nào
Ví dụ: void myMethod(string name, int age)
Console.WriteLine("My name is " + name + " and I am " + age + " years old."); }
• Trong ví dụ trên, chương trình con myMethod có hai tham số đầu vào là name và age, và không trả về giá trị nào Nó chỉ in ra một chuỗi ký tự trên màn hình console
• Nếu bạn muốn chương trình con trả về một giá trị, bạn có thể sử dụng một kiểu dữ ệu khác void.li
Ví dụ: int addNumbers(int x, int y)
• Trong ví dụ trên, chương trình con addNumbers có hai tham số đầu vào là x và y, và trả về tổng của hai tham số đó dướ ạng mội d t giá trị kiểu số nguyên.
MẢNG 1 CHIỀU
Khái niệm
• Tập hợp các đối tượng có cùng kiểu dữ liệu.
• Mỗi đối tượng trong mảng được gọi là một phần tử.
• Các phần tử phân biệt với nhau bằng chỉ số phần tử Trong C# chỉ số phần tử là các số nguyên không âm và bắt đầu từ 0 1 2 3…
Đặc điểm
• Các phần tử trong mảng dùng chung một tên và được truy xuất thông qua chỉ số phần tử
• Một mảng cần có giới hạn số phần tử mà mảng có thể chứa.
• Phải cấp phát vùng nhớ mới có thể sử dụng mảng.
• Vị trí ô nhớ của các phần tử trong mảng được cấp phát liền kề nhau
4.3 Lợi ích của việc sử dụng mảng
• Gom nhóm các đối tượng có chung tính chất lại với nhau giúp code gọn gàng hơn
• Để thao tác, dễ quản lý, nâng cấp sửa chữa Vì lúc này việc thay đổi số lượng sinh viên ta chỉ cần thay đổi số phần tử của mảng là được
• Dễ dàng áp dụng các cấu trúc lặp vào để xử lý dữ liệu
4.4 Khai báo, khởi tạo, sử dụng mảng 1 chiều
• Cú pháp: [] ; trong đó:
• là kiểu dữ liệu của các phần tử trong mảng
• Cặp dấu là ký hiệu cho khai báo mảng 1 chiều.[]
• là tên của mảng, cách đặt tên mảng cũng như cách đặt tên biến
• Để sử dụng được mảng ta phải khởi tạo giá trị hoặc cấp phát vùng nhớ cho mảng Cấp phát vùng nhớ:
• Được thực hiện thông qua toán tử new
• Lưu ý là khi cấp phát vùng nhớ cho mảng 1 chiều ta cần chỉ ra số phần tử tối đa của mảng
Ví dụ: string[] chuoi = new string[3];
• Sau khi mảng được cấp phát vùng nhớ thì các phần tử trong mảng sẽ mang giá trị mặc định:
• Đối với số nguyên là 0
• Đối với số thực là 0.0
• Đối với kiểu ký tự là ‘’ (ký tự rỗng)
• Đối với kiểu tham chiếu là null
• Chúng ta có thể khởi tạo giá trị khác mà chúng ta mong muốn ngay khi cấp phát vùng nhớ bằng cú pháp sau: Các giá trị khởi tạo nằm trong cặp dấu ngoặc nhọn {} và cách nhau bởi dấu phẩy
[] = new [] {,…