HACKIS - Hacking Internet Security
Would you like to react to this message? Create an account in a few clicks or log in to continue.
Search
 
 

Display results as :
 


Rechercher Advanced Search

Latest topics
» Tuyệt Kỹ Đong Giai Chân Kinh (tuyệt Kỹ cua trai)
Struct là gì ? EmptyThu Aug 23, 2012 5:38 am by Admin

» Tuyệt kỹ cua giai
Struct là gì ? EmptyThu Aug 23, 2012 5:36 am by Admin

» NETCAT.........
Struct là gì ? EmptyMon Aug 13, 2012 6:35 am by Admin

» Bảo mật CSDL bằng phương pháp mã hóa.
Struct là gì ? EmptyTue Apr 17, 2012 10:04 pm by Admin

» Hàm mã hóa MD5 bằng JavaScript
Struct là gì ? EmptyTue Apr 17, 2012 10:03 pm by Admin

» Giá của món quà
Struct là gì ? EmptyFri Apr 13, 2012 6:01 am by Admin

» Sẽ chỉ yêu ai?
Struct là gì ? EmptyFri Apr 13, 2012 6:01 am by Admin

» Cách đọc bảng chữ cái!
Struct là gì ? EmptyThu Apr 12, 2012 10:37 pm by Admin

» Gắn trojan, keylog, virus vào website, forum
Struct là gì ? EmptyTue Apr 10, 2012 1:14 am by Admin

Affiliates
free forum


Struct là gì ?

Go down

Struct là gì ? Empty Struct là gì ?

Post  Admin Wed Apr 13, 2011 1:19 am

Struct là gì?

Các ngôn ngữ lập trình cũ trước đây chỉ có biến và mảng để lưu trữ thông tin, nhưng chỉ lưu trữ được có một kiểu dữ duy nhất. Sau này đến khi các ngôn ngữ như Foxpro, Pascal, C … ra đời thì cho ra kiểu lưu trữ thông tin mới ở dạng cấu trúc, mẫu tin cho phép lưu trữ thông tin của nhiều kiểu dữ liệu khác nhau vào một nơi, chỉ đại diện bằng một tên duy nhất. Ngôn ngữ C cho ra kiểu Struct - là một kiểu dữ liệu do người dùng định nghĩa, cho phép gom nhóm nhiều kiểu thông tin lại với nhau thành một cấu trúc gồm nhiều thông tin, ví dụ như một cấu trúc thông tin về Con người thì gồm có : tên, tuổi, cân nặng, nghề nghiệp, ngày sinh …

struct ConNguoi
{
int tuoi;
char ten[30];
int cannang;};Lúc đó Struct chỉ lưu trữ các biến thành viên bên trong, tất cả đều public hết. Muốn truy cập các biến thành viên bên trong, ta chỉ cần dùng toán tử chấm “.” :

main()
{
struct ConNguoi a;
a.ten = ‘”Nguyen Van A”;
a.tuoi = 25;
printf(" Ten la : %d \n", a.ten);
}Về bản chất thì kiểu dữ liệu Struct cũng giống như các kiểu dữ liệu bẩm sinh mà ngôn ngữ C đã cung cấp như : char, int … cũng được tạo trên vùng nhớ Stack, nhưng Struct là một cấu trúc gồm nhiều thông tin chứ không còn tính đơn lẽ về thông tin nữa.

Sau này đến C++ thì có OOP, class ra đời, Struct vẫn được giữ và mở rộng ra tý là có thể chứa các hàm (function) bên trong gần giống như Class nhưng Struct vẫn là kiểu tham trị được tạo ra trên vùng nhớ Stack, còn Class thì kiểu tham chiếu được lưu trữ trên vùng nhớ mở rộng Heap.

Cho đến khi C# ra đời thì thật sự rắc rối, nhập nhằng giữa khái niệm Struct và Class vì đến lúc này Microsoft lại mở rộng tính năng của kiểu Struct ra gần giống như của Class như : các thông tin bên trong Struct mặc định cũng private, Struct có thể implement các interface, Struct cũng có các Property … Người ta vẫn biết một bên là tham trị còn một bên là tham chiếu nhưng hai kiểu dữ liệu này có rất nhiều đặc điểm giống nhau, có nhiều câu hỏi đặt ra vậy hỏi khi nào dùng kiểu Class khi nào dùng kiểu Struct, sao Microsoft lại mở rộng ra tính năng của Struct giống Class chi cho khó hiểu vậy thì không ai trả lời được hết trơn, Tùng đã tham khỏa rất nhiều tài liệu, forum nhưng cũng không có được sự phân biệt rõ ràng (Tùng sẽ có bài viết để giúp chúng ta phân biệt được các điểm khác nhau Class và Struct, nói chung là không hoàn toàn tuyệt đối nhưng cũng phần nào giúp chúng ta có được sự phân biệt khác nhau giữa Class và Struct, thuyết tương đối mà )

Cú pháp khai báo Struct strong C# :

modifiers struct Test : [interface list]
{
// Khai báo các biến thành viên
//
}ví dụ :

public struct ToaDo
{
int _x;
int _y;

public ToaDo(int x, int y)
{
_x = x;
_y = y;
}

public int X
{
get { return _x; }
set { _x = value; }
}
public int Y
{
get { return _y; }
set { _y = value; }
}
}

Trong C# thì :

- Constructor của Struct phải có tham số
- Struct không kế thừa
- Struct không có hàm hủy

- Khi ta không cung cấp hàm constructor thì hàm constructor mặc nhiên của trình biên dịch sẽ tự khởi gán các biến thành viên về các giá trị 0, null tùy theo kiểu tham trị hay tham chiếu của biến thành viên.

- Ta có thể dùng kiểu Struct mà có thể dùng toán tử new hay không tùy ý. Khi dùng toán tử new thì constructor sẽ được triệu gọi, hay ta có thể khởi gán đơn lẻ cho các biến thành viên trong kiểu Struct.

- Ta không được khởi tạo giá trị cho các biến thành viên của Struct trong lúc khai báo :

public struct ToaDo
{
int _x = 10;
int _y = 20; // ……
}
Admin
Admin
Admin

Tổng số bài gửi : 782
Join date : 2009-08-15

https://hackis.forumvi.com

Back to top Go down

Back to top


 
Permissions in this forum:
You cannot reply to topics in this forum