Biểu thức là một nguyên tử hoặc một danh sách. Biểu thức luôn có một giá trị mà việc định trị nó theo nguyên tắc sau: • Nếu biểu thức là một số, thì giá trị của biểu thức là giá trị của số đó. Ví dụ: 25 = 25 • Nếu biểu thức là một ký hiệu thì giá trị của biểu thức có thể là Được xác định trước bởi LISP (chẳng hạn t có giá trị là T (TRUE) và nil có giá trị là NIL một danh sách rỗng) hoặc Một giá trị dữ liệu. | Giáo trì nh hình thành đối chi ếu ứng dụ ng con trò tha m chiếu tới các kiểu d ữ liệu khác nhau Đặc tả thuộc tính Có hai loại con trỏ khác nhau Con trỏ chỉ có thể tham chiếu tới các ĐTDL cùng kiểu Đây là phương pháp được dùng trong Pascal và Ada. Ví dụ trong Pascal Var p Ainteger chỉ ra rằng p là một biến con trỏ chứa địa chỉ của ô nhớ lưu trữ được một số integer. Var q AVECT chỉ ra rằng q là một biến con trỏ chứa địa chỉ của khối ô nhớ của ĐTDL thuộc kiểu véctơ VECT nào đó. Con trỏ có thể tham chiếu tới các ĐTDL khác kiểu nhau Đây là cách được dùng trong các ngôn ngữ như SNOBOL4 nơi mà đối tượng dữ liệu mang bộ mô tả kiểu trong quá trình thực hiện và phép kiểm tra kiểu động được sử dụng. Đặc tả phép toán Các phép toán bao gồm Phép toán cấp phát ô nhớ động Phép toán này dùng để cấp phát ô nhớ cho đối tượng dữ liệu mới và trả địa chỉ của ô nhớ đó về trong biến con trỏ. Đây là phép toán quan trọng nhất của kiểu con trỏ. Phép toán này có hai điểm khác biệt với việc tạo ra đối tượng dữ liệu tĩnh bằng cách khai báo là Đối tượng dữ liệu được tạo ra không cần có tên vì nó được truy xuất thông qua con trỏ và đối tượng dữ liệu có thể được tạo ra một cách động trong quá trình thực hiện chương trình. Trong Pascal và Ada thì phép toán này có tên là NEW. Ví dụ NEW p . Phép toán truy xuất ô nhớ được cấp phát động Để truy xuất đến giá trị dữ liệu lưu trong khối ô nhớ cấp phát động ta phải sử dụng địa chỉ của khối ô nhớ thông qua tên con trỏ vì khối ô nhớ này không có tên . Ví dụ qA 5 là phần tử thứ 5 của véctơ Vect được trỏ bởi q. Phép toán thu hồi ô nhớ được cấp phát động Phép toán này cho phép giải phóng ô nhớ đã cấp phát. Trong Pascal dùng phép toán DISPOSE. Ví dụ sau trong Pascal minh hoạ tổng hợp các điều nói trên Type Vect ARRAY of Integer Lúc này bộ nhớ cho Vect chưa được cấp phát VAR p AVect Khai báo p là một biến con trỏ chứa địa chỉ của khối ô nhớ lưu trữ ĐTDL thuộc kiểu véctơ Vect. Khi dịch đến đây thì ô nhớ cho p sẽ được cấp phát Begin 49 Chương IV Kiểu dữ liệu .