Đang chuẩn bị nút TẢI XUỐNG, xin hãy chờ
Tải xuống
Chương 4. Hàm và chương trình Tham trị Tham chiếu Dẫn trỏ 7. Hàm và mảng dữ liệu a. Truyền mảng 1 chiều cho hàm Thông thường chúng ta hay xây dựng các hàm làm việc trên mảng như vectơ hay ma trận các phần tử. Khi đó tham đối thực sự của hàm sẽ là các mảng dữ liệu này. Trong trường hợp này ta có 2 cách khai báo đối. Cách thứ nhất đối được khai báo bình thường như khai báo biến mảng nhưng không cần có số phần tử kèm theo, ví dụ: − int x[]; − float x[]; Cách thứ. | Chương 4. Hàm và chương trình Tham trị Tham chiếu Dần trỏ Khai báo đối void swap int x int y void swap int x int y void swap int x int y Câu lệnh t x x y y t t x x y y t t x x y y t Lời gọi swap a b swap a b swap a b Tác dụng a b không thay đổi a b có thay đổi a b có thay đổi 7. Hàm và mảng dữ liệu a. Truyền mảng 1 chiều cho hàm Thông thường chúng ta hay xây dựng các hàm làm việc trên mảng như vectơ hay ma trận các phần tử. Khi đó tham đối thực sự của hàm sẽ là các mảng dữ liệu này. Trong trường hợp này ta có 2 cách khai báo đối. Cách thứ nhất đối được khai báo bình thường như khai báo biến mảng nhưng không cần có số phần tử kèm theo ví dụ - int x - float x Cách thứ hai khai báo đối như một con trỏ kiểu phần tử mảng ví dụ int p float p Trong lời gọi hàm tên mảng a sẽ được viết vào danh sách tham đối thực sự vì a là địa chỉ của phần tử đầu tiên của mảng a nên khi hàm được gọi địa chỉ này sẽ gán cho con trỏ p. Vì vậy giá trị của phần tử thứ i của a có thể được truy cập bởi x i theo khai báo 1 hoặc p i theo khai báo 2 và nó cũng có thể được thay đổi thực sự do đây cũng là cách truyền theo dẫn trỏ . Sau đây là ví dụ đơn giản nhập và in vectơ minh hoạ cho cả 2 kiểu khai báo đối. Ví dụ 8 Hàm nhập và in giá trị 1 vectơ void nhap int x int n n số phần tử int i for i 0 i n i cin x i hoặc cin x i void in int p int n 109 Chương 4. Hàm và chương trình int i for i 0 i n i cout p i main int a 10 mảng a chứa tối đa 10 phần tử nhap a 7 vào 7 ph ần tử đầu tiên cho a in a 3 ra 3 phần tử đầu tiên của a b. Truyền mảng 2 chiều cho hàm Đối với mảng 2 chiều khai báo đối cũng như lời gọi là phức tạp hơn nhiều so với mảng 1 chiều. Ta có hai cách khai báo đối như sau - Khai báo theo đúng bản chất của mảng 2 chiều float x m n do C qui định tức x là mảng 1 chiều m phần tử mỗi phần tử của nó có kiểu float n . Từ đó đối được khai báo như một mảng hình thức 1 chiều khồng cần số phần tử - ở đây là số dòng của kiểu float n . Tức có thể khai báo như sau float x n mảng với số phần tử không định .