Truyền mảng vào hàm

Một phần của tài liệu ngôn ngữ lt_c (Trang 154 - 155)

C là một ngơn ngữ lập trình có cấu trúc, tuy vậy nó vẫn chứa một số câu lệnh làm phá vớ cấu trúc của chương trình:

Kết quả của chương trình trên được minh họa như sau:

10.3 Truyền mảng vào hàm

Trong C, khi một mảng được truyền vào hàm như một tham số, thì chỉ có địa chỉ của mảng được truyền vào. Tên mảng không kèm theo chỉ số là địa chỉ của mảng. Đoạn mã dưới đây mô tả cách truyền địa chỉ của mảng ary cho hàm fn_ary():

int main() { int ary[10]; . . fn_ary(ary); . . }

Nếu tham số của hàm là một mảng một chiều thì tham số đó có thể được khai báo theo một trong các cách sau:

fn_ary (int ary [10]) /* sized array */ {

: }

hoặc

fn_arry (int ary []) /*unsized array */ {

: }

Cả hai khai báo ở trên đều cho cùng kết quả. Kiểu thứ nhất sử dụng cách khai báo mảng chuẩn, chỉ rõ ra kích thước của mảng. Kiểu thứ hai, chỉ ra rằng tham số là một mảng kiểu int có kích

thước bất kì.

Chương trình sau đây nhận các số vào một mảng số nguyên. Sau đó mảng này sẽ được truyền vào hàm sum_arr(). Hàm sẽ tính tốn và trả về tổng của các số nguyên trong mảng.

#include <stdio.h> int main()

{

int num[5], ctr, sum = 0;

int sum_arr(int num_arr[]); /* Function declaration */ clrscr();

for(ctr = 0; ctr < 5; ctr++) /*Accepts numbers into the array*/

{

printf("\nEnter number %d: ", ctr+1); scanf("%d", &num[ctr]);

}

sum = sum_arr(num); /* Invokes the function */ printf("\nThe sum of the array is %d", sum); getch();

}

int sum_arr(int num_arr[]) /* Function definition */ {

int i, total;

for(i = 0, total = 0; i < 5; i++) /* Calculates the sum */ total += num_arr[i];

return total; /* Returns the sum to main() */ }

Kết quả của chương trình trên được minh họa như sau: Enter number 1: 5

Enter number 2: 10 Enter number 3: 13 Enter number 4: 26 Enter number 5: 21

The sum of the array is 75

Một phần của tài liệu ngôn ngữ lt_c (Trang 154 - 155)

Tải bản đầy đủ (DOCX)

(194 trang)
w