Tham số thực sự: là tham số được viết trong lời gọi
hàm
Ý nghĩa: sử dụng hàm với tham số cụ thể
Cú pháp lời gọi hàm:
[v =]<name>([<real_pars>]); Trong đó:
v: là tên một biến nào đó được gán giá trị của hàm
name: tên hàm
real-pars: danh sách tham số thực sự
7/2020 Cơ sở lập trình 161
Vị trí lời gọi hàm: Lời gọi hàm được thực hiện bên trong một thân hàm bất kì nào đó miễn là nó đã được khai báo nguyên mẫu.
Yêu cầu
Số lượng tham số
Kiểu giá trị của các tham số.
Giá trị của tham số:
Biến, hằng, một lời gọi hàm khác
7/2020 Cơ sở lập trình 162
Ví dụ:
Gthua(5);
Nhap(x,d);
Nhap(x);//tham số có giá trị mặc định
Vấn đề: giá trị của tham số thực không thay đổi sau khi thực hiện hàm???
7/2020 Cơ sở lập trình 163
Ví dụ:kết quả ??
#include <stdio.h>
#include <conio.h>
void swap_func ( int x, int y) // Ham hoan vi ban 1
{ int temp; temp = x;
x = y ;
y = temp;
}
void main ()
{ int x,y;
printf(“n Nhap vao hai so x,y: ”); scanf (“%d %d”,&x,&y); swap_function(x,y) ;
printf(“n Hai so sau khi hoan vi: %d %d”,x,y );
}
7/2020 Cơ sở lập trình 164
Giải pháp: sử dụng con trỏ làm tham số hình thức void swap_func ( int *x, int *y) // Ham hoan vi ban 2
{ int temp ;
temp = *x;
*x = *y ;
*y = temp;
}
void main ()
{ int x,y;
printf(“n Nhap vao hai so x,y: ”); scanf (“%d %d”,&x,&y);
swap_function(&x,&y) ;
printf(“n Hai so sau khi hoan vi: %d %d”,x,y );
}
7/2020 Cơ sở lập trình 165
Vấn đề
Khi nào sử dụng con trỏ làm tham số hình
thức?
Nếu tham số hình thức là con trỏ thì tham số thực sự tương ứng có giá trị và kiểu như thế nào?
7/2020 Cơ sở lập trình 166
5.1 Khái niệm kiểu dữ liệu có cấu trúc
5.2 Khai báo và truy nhập vào phần tử struct
5.3 Mảng cấu trúc
5.4 Dữ liệu kiểu enum và kiểu typedef (tự học)
5.5 Kiểu dữ liệu file
07/2020 Cơ sở lập trình 167
Khái niệm: Kiểu dữ liệu có cấu trúc là kiểu dữ liệu mà các phần tử dữ liệu của nó thuộc kiểu dữ liệu đơn giản và được tổ chức theo một quy tắc nhất định. Hay kiểu dữ liệu có cấu trúc là kiểu dữ liệu mà các giá trị của nó là sự kết hợp của các giá trị thuộc kiểu dữ liệu đơn giản.
Các kiểu dữ liệu có cấu trúc: kiểu mảng, kiểu bản ghi, kiểu tập hợp và kiểu tệp tin
07/2020 Cơ sở lập trình 168
5.2.1 Khai báo kiểu struct
5.2.2 Truy nhập vào phần tử struct
07/2020 Cơ sở lập trình 169
Cú pháp: 2 cách
typedef struct { //khai báo các thành phần } TypeName; | |
Trong đó: struct là từ khóa TypeName: do người dùng đặt theo quy tắc đặt tên Các thành phần: có thể là biến, mảng, hợp hoặc một cấu trúc khác mà kiểu của nó đã định nghĩa từ trước |
Có thể bạn quan tâm!
- Cơ sở lập trình - Trường ĐH Thương mại - 8
- Cơ sở lập trình - Trường ĐH Thương mại - 9
- Cơ sở lập trình - Trường ĐH Thương mại - 10
- Cơ sở lập trình - Trường ĐH Thương mại - 12
- Cơ sở lập trình - Trường ĐH Thương mại - 13
- Cơ sở lập trình - Trường ĐH Thương mại - 14
Xem toàn bộ 113 trang tài liệu này.
Cơ sở lập trình 170
Ví dụ
typedef struct { unsigned char ngay; unsigned char thang; unsigned char nam; } date; |
Cơ sở lập trình 171
typedef struct { int so_nha; char phuong[20]; char quan[15]; char thanh_pho[15]; }dia_chi; |
Cơ sở lập trình 172
typedef struct { char ho_ten[30]; date ngay_sinh; char maSV[10]; } sinh_vien; |
Cơ sở lập trình 173
Khai báo biến kiểu struct
Cách 1
struct TypeName VarName;
Trong đó:
TypeName: là tên kiểu struct
VarName: là tên biến struct
Nhận xét: với cách khai báo này thì các biến sẽ được cấp phát đầy đủ cho tất cả các thành phần của nó.
07/2020 Cơ sở lập trình 174
Ví dụ
struct date ngay_sinh,ngay_nhap_hoc;
struct dia_chi A, B;
struct sinh_vien X, Y;
07/2020 Cơ sở lập trình 175
Khai báo biến kiểu struct
Cách 2: định nghĩa kiểu kết hợp với khai báo biến struct TypeName
{
// Khai báo các thành phần
}danh_sach_ten_bien;
Nhận xét: với cách khai báo này ta có thể không cần tên kiểu cấu trúc nhưng nếu khai báo thêm biến thì sẽ thành kiểu dữ liệu khác.
struct
{
// Khai báo các thành phần
}danh_sach_ten_bien;
07/2020 Cơ sở lập trình 176