Hàm và mảng một chiều

Một phần của tài liệu giao trinh C(dttx) pot (Trang 75 - 77)

- Kết quả trả về của hàm là ký tự được ấn.

 Kiểu con trỏ và kiểu địa chỉ

8.1. Hàm và mảng một chiều

Nếu tham số thực là tên mảng a (một chiều) kiểu int (float, double,...) thì đối pa tương ứng cần phải là môt con trỏ kiểu int (float, double,...).

Đối pa có thể khai báo theo hai cách: Cách 1: Kiểu con trỏ

int *pa; float *pa; double *pa; ...

Cách 2: có thể khai báo như một mảng hình thức:

int pa[]; float pa[]; double pa[]; ...

Hai cách khai báo trên là tương đương.

Khi hàm bắt đầu làm việc thì giá trị của a được truyền cho pa. Vì a là hằng địa chỉ biểu diễn đỉachi đầu của mảng, nên con trỏ pa chứa địa chỉ phần tử đầu tiên của mảng. Như vậy khi muốn truy nhập đến phần tử a[i] trong thân hàm có thể dùng một trong hai cách viết sau:

*(pa+i) và pa[i] Ví dụ:

#include <stdio.h>

/*Dưới đây sẽ khai báo hàm và đối của hàm */

*/

void ham1(int pa[]); void ham2(int *pa); void ham3(int pa[]); void ham4(int *pa); void main() {

int a [3]={10,20,30};

printf (“\n Ket qua thuc hien ham 1:\n”); ham1(a);/*Gọi ham1*/

printf (“\n Ket qua thuc hien ham 2:\n”); ham2(a); /*Gọi ham2*/

printf (“\n Ket qua thuc hien ham 3:\n”); ham3(a); /*Gọi ham3*/

printf (“\n Ket qua thuc hien ham 4:\n”); ham4(a); /*Gọi ham4*/

}

void ham1(int pa[]) {

printf("Noi dung cua a[0] => %d\n",pa[0]); printf("Noi dung cua a[1] => %d\n",pa[1]); printf("Noi dung cua a[2] => %d\n",pa[2]); }

void ham2(int *pa) {

printf("Noi dung cua a[0] => %d\n",pa[0]); printf("Noi dung cua a[1] => %d\n",pa[1]); printf("Noi dung cua a[2] => %d\n",pa[2]); }

void ham3(int pa[]) {

printf("Noi dung cua a[0] => %d\n",*(pa)); printf("Noi dung cua a[1] => %d\n",*(pa+1)); printf("Noi dung cua a[2] => %d\n",*(pa+2)); }

void ham4(int *pa) {

printf("Noi dung cua a[0] => %d\n",* (pa)); printf("Noi dung cua a[1] => %d\n", *(pa+1)); printf("Noi dung cua a[2] => %d\n", *(pa+2)); }

Kết quả:

Ket qua thuc hien ham 1: Noi dung cua a[0] =>10 Noi dung cua a[1] =>20 Noi dung cua a[2] =>30 Ket qua thuc hien ham 2: Noi dung cua a[0] =>10

Noi dung cua a[1] =>20 Noi dung cua a[2] =>30 Ket qua thuc hien ham 3: Noi dung cua a[0] =>10 Noi dung cua a[1] =>20 Noi dung cua a[2] =>30 Ket qua thuc hien ham 4: Noi dung cua a[0] =>10 Noi dung cua a[1] =>20 Noi dung cua a[2] =>30

Như vậy kết quả thực hiện của bốn hàm là giống nhau.

Một phần của tài liệu giao trinh C(dttx) pot (Trang 75 - 77)

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

(184 trang)
w