Truyền dóy như là tham số của hàm

Một phần của tài liệu bài giảng kỹ thuật lập trình ths. trần xuân thanh - khoa cntt, đh thành đô (Trang 67 - 68)

Vào một lỳc nào đú cú thể chỳng ta cần phải truyền một mảng tới một hàm như là một tham số. Trong C++, việc truyền theo tham số giỏ trị một khối nhớ là khụng hợp lệ, ngay cả khi nú được tổ chức thành một mảng. Tuy nhiờn chỳng ta lại được phộp truyền địa chỉ của nú, việc này cũng tạo ra kết quả thực tế giống thao tỏc ở trờn nhưng lại nhanh hơn nhiều và hiệu quả hơn.

Để cú thể nhận mảng là tham số thỡ điều duy nhất chỳng ta phải làm khi khai bỏo hàm là chỉ định trong phần tham số kiểu dữ liệu cơ bản của mảng, tờn mảng và cặp ngoặc vuụng trống.

Vớ dụ, hàm sau:

void procedure (int arg[])

nhận vào một tham số cú kiểu "mảng của int" và cú tờn arg. Để truyền tham số cho hàm này một

mảng được khai bỏo: int myarray [40]; chỉ cần gọi hàm như sau:

procedure (myarray); Dưới đõy là một vớ dụ cụ thể

// arrays as parameters #include <iostream.h>

void printarray (int arg[], int length) { for (int n=0; n<length; n++)

cout << arg[n] << " "; cout << "\n"; } int main () { 5 10 15 2 4 6 8 10

int firstarray[] = {5, 10, 15}; int secondarray[] = {2, 4, 6, 8, 10}; printarray (firstarray,3); printarray (secondarray,5); return 0; }

Như bạn cú thể thấy, tham số đầu tiờn (int arg[]) chấp nhận mọi mảng cú kiểu cơ bản là int, bất kể độ dài của nú là bao nhiờu, vỡ vậy cần thiết phải cú tham số thứ hai để bỏo cho hàm này biết độ dài của mảng mà chỳng ta truyền cho nú.

Trong phần khai bỏo hàm chỳng ta cũng cú thể dựng tham số là cỏc mảng nhiều chiều. Cấu trỳc của mảng 3 chiều như sau:

base_type[][depth][depth]

vớ dụ, một hàm với tham số là mảng nhiều chiều cú thể như sau: void procedure (int myarray[][3][4])

chỳ ý rằng cặp ngoặc vuụng đầu tiờn để trống nhưng cỏc cặp ngoặc sau thỡ khụng. Bạn luụn luụn phải làm vậy vỡ trỡnh biờn dịch C++ phải cú khả năng xỏc định độ lớn của cỏc chiều thờm vào của mảng.

Mảng, cả một chiều và nhiều chiều, khi truyền cho hàm như là một tham số thường là nguyờn nhõn gõy lỗi cho những lập trỡnh viờn thiếu kinh nghiệm. Cỏc bạn nờn đọc bài

Một phần của tài liệu bài giảng kỹ thuật lập trình ths. trần xuân thanh - khoa cntt, đh thành đô (Trang 67 - 68)