Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 6 - Con trỏ và mảng Khái niệm ngôn ngữ lập trình C/C++; Khai báo mảng trong C/C++; Khởi tạo mảng trong C/C++; Con trỏ tới một mảng trong C++; Truyền mảng như là các tham số hàm trong C++;... Mời các bạn cùng tham khảo bài giảng!
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI KỸ THUẬT LẬP TRÌNH HỆ CƠ ĐIỆN TỬ Programming Engineering in Mechatronics Giảng viên: TS. TS. Đặng Thái Việt Đơn vị: Bộ mơn Cơ điện tử, Viện Cơ khí Hà Nội, 09/2017 KỸ THUẬT LẬP TRÌNH HỆ CƠ ĐIỆN TỬ Tổng quan về ngơn ngữ lập trình Cấu trúc Giới thiệu sơ bộ ngơn ngữ C Vào/ra trong C Kiểu, tốn tử và biểu thức Cơ sở của C++ Dịng điều khiển 10 Lớp Hàm và cấu trúc chương trình 11 Kế thừa và đa hình Con trỏ và mảng 12 Luồng vào/ra trong C++ CHƯƠNG 6. Con trỏ và mảng 6.1 Khái niệm về mảng 6.2 Khái niệm về con trỏ Khái niệm về mảng 1.1 Khái niệm § § § Ngơn ngữ lập trình C/C++ cung cấp cấu trúc liệu gọi mảng, lưu trữ tập hợp liệu kiểu với độ dài cố định Một mảng sử dụng để lưu trữ tập hợp liệu Thay khai báo biến cách rời rạc, biến so0, so1,… so99, bạn khai báo mảng giá trị so[0], so[1] … so[99] để biểu diễn giá trị riêng biệt Một thành viên cụ thể mảng truy cập qua index (chỉ số) Tất mảng bao gồm vị trí nhớ liền kề Địa thấp tương ứng với thành viên đầu tiền địa cao tương ứng với thành viên cuối mảng Khái niệm về mảng 1.2 Khai báo mảng trong C/C++ § § Để khai báo mảng ngôn ngữ C/C++, bạn xác định kiểu biến số lượng phần tử yêu cầu biến sau: Đây mảng chiều Kich_co_mang phải số nguyên lớn Kieu phải hợp lệ ngơn ngữ C/C++ Ví dụ, khai báo mảng 10 phần tử gọi balance với kiểu double, sử dụng câu lệnh sau đây: double balance[10]; Khái niệm về mảng 1.3 Khởi tạo mảng trong C/C++ § § Bạn khởi tạo mảng C/C++ phần tử sử dụng câu lệnh đây: Số lượng giá trị dấu ngoặc kép {} không lớn số lượng phần tử khai báo dấu ngoặc vuông [] Khái niệm về mảng 1.3 Khởi tạo mảng trong C/C++ § § Nếu bạn bỏ sót kích cỡ mảng mảng đủ lớn để giữ giá trị khởi tạo: Bạn tạo xác chuỗi có giá trị giống hệt chuỗi bên cách gán phần tử Dưới ví dụ gán giá trị cho phần tử mảng: Tất mảng có số (index) 0, gọi số phần tử cuối mảng có số độ lớn mảng trừ Dưới cách biểu diễn hình họa cho chuỗi khai báo bên thông qua số: Khái niệm về mảng 1.3 Truy cập các phần tử mảng trong C/C++ § § Một mảng truy cập cách đánh số tên mảng Dưới cách truy cập giá trị mảng: Câu lệnh lấy phần tử thứ 56 mảng gán giá trị cho biến hocphi Khái niệm về mảng Ví dụ Khái niệm về mảng 1.4 Mảng đa chiều trong C++ § § C++ hỗ trợ mảng đa chiều Dưới mẫu chung khai báo mảng đa chiều: Ví dụ: int hocphi[5][10][4]; 10 Khái niệm về con trỏ 2.6 Con trỏ và Mảng trong C++ § § Việc áp dụng tốn tử trỏ * tới biến mang hoàn hảo, khơng hợp lệ sửa đổi giá trị biến mang Lý biến mang constant mà trỏ tới phần đầu mảng sử dụng l-value Bởi vì, tên mảng tạo trỏ, sử dụng biểu thức trỏ, miễn khơng bị sửa đổi Ví dụ sau lệnh hợp lệ mà gán mang[2] giá trị 500 Lệnh hợp lệ biên dịch thành công mang khơng bị thay đổi 47 Khái niệm về con trỏ 2.7 Mảng các con trỏ trong C++ § Trước hiểu khái niệm mảng trỏ, xem xét ví dụ sau, mà sử dụng mảng gồm số integer: 48 Khái niệm về con trỏ 2.7 Mảng các con trỏ trong C++ § § Có tình muốn trì mảng, mà lưu giữ trỏ tới kiểu liệu int char kiểu khác Sau khai báo mảng trỏ tới integer: Nó khai báo contro mảng trỏ MAX kiểu integer Vì thế, phần tử contro, giữ trỏ tới giá trị int Ví dụ sau sử dụng số integer, mà lưu giữ mảng trỏ sau: 49 Khái niệm về con trỏ 2.7 Mảng các con trỏ trong C++ 50 Khái niệm về con trỏ 2.7 Mảng các con trỏ trong C++ § Bạn sử dụng mảng trỏ tới ký tự để lưu giữ danh sách chuỗi sau: 51 Khái niệm về con trỏ 2.8 Con trỏ tới con trỏ trong C++ § Một trỏ tới trỏ form không định hướng chuỗi trỏ Thông thường, trỏ chứa địa biến Khi định nghĩa trỏ tới trỏ, trỏ chứa địa trỏ thứ hai, mà trỏ tới vị trí mà chứa giá trị thực hiển thị sơ đồ đây: 52 Khái niệm về con trỏ 2.8 Con trỏ tới con trỏ trong C++ § § Một biến, mà trỏ tới trỏ, phải khai báo Điều thực việc đặt dấu (*) trước tên Ví dụ, sau khai báo trỏ tới trỏ kiểu int: Khi giá trị mục tiêu trỏ không định hướng trỏ tới trỏ, truy cập giá trị yêu cầu toán tử dấu áp dụng hai lần, ví dụ: 53 Khái niệm về con trỏ 2.8 Con trỏ tới con trỏ trong C++ 54 Khái niệm về con trỏ 2.9 Truyền con trỏ tới hàm trong C++ § § C++ cho phép bạn truyền trỏ tới hàm Để làm điều này, đơn giản bạn cần khai báo tham số hàm dạng kiểu trỏ Ở ví dụ đơn giản đây, truyền trỏ unsigned long tới hàm thay đổi giá trị bên hàm, mà phản chiếu trở lại gọi hàm: 55 Khái niệm về con trỏ 2.9 Truyền con trỏ tới hàm trong C++ 56 Khái niệm về con trỏ 2.9 Truyền con trỏ tới hàm trong C++ § Hàm, mà chấp nhận trỏ, chấp nhận mảng ví dụ sau: 57 Khái niệm về con trỏ 2.9 Truyền con trỏ tới hàm trong C++ 58 Khái niệm về con trỏ 2.10 Trả về con trỏ từ hàm trong C++ § § Như thấy cách C++ cho phép trả mảng từ hàm, tương tự vậy, C++ cho phép bạn trả trỏ từ hàm Để làm điều này, bạn phải khai báo hàm trả trỏ sau: Điều thứ hai cần ghi nhớ là, khơng ý kiến tốt để trả địa biến cục tới ngoại vi hàm, bạn phải định nghĩa biến cục biến 59 static Khái niệm về con trỏ 2.10 Trả về con trỏ từ hàm trong C++ § Bây giờ, giả sử hàm sau tạo 10 số ngẫu nhiên trả chúng sử dụng tên mảng mà biểu diễn trỏ, ví dụ, địa phần tử mảng 60 Khái niệm về con trỏ 2.10 Trả về con trỏ từ hàm trong C++ 61 ...KỸ THUẬT LẬP TRÌNH HỆ CƠ ĐIỆN TỬ Tổng quan về ngơn ngữ? ?lập? ?trình Cấu trúc Giới thiệu sơ bộ ngơn ngữ C Vào/ra trong C Kiểu, tốn tử và biểu thức Cơ? ?sở của C++ Dịng điều khiển... Dịng điều khiển 10 Lớp Hàm và cấu trúc? ?chương? ?trình 11 Kế thừa và đa hình Con trỏ và mảng 12 Luồng vào/ra trong C++ CHƯƠNG? ?6. Con trỏ và mảng 6. 1 Khái niệm về mảng 6. 2 Khái niệm về con trỏ Khái niệm về mảng... 2 .6? ?Con trỏ và Mảng trong C++ 45 Khái niệm về con trỏ 2 .6? ?Con trỏ và Mảng trong C++ § Tuy nhiên, trỏ mảng khơng hồn tồn thay cho Ví dụ, bạn xét chương trình sau: 46 Khái niệm về con trỏ 2 .6? ?Con trỏ và Mảng trong C++