Bài giảng Lập trình C các thao tác trên chuỗi - Một số kỹ thuật liên quan đến hàm - Nguyễn Văn Khiết
Nội dung
Tham số hàm main
Hàm với tham số mặc định
Các kiểu trả về của hàm
Hàm inline
Con trỏ hàm
Tham số hàm main
Hàm main có thể nhận vào tham số.
Ví dụ:
int main(int argc, char* argv[])
{
printf(“Hello world!”);
return 0;
}
Argc : số tham số
char* argv[] : mảng các tham số hàm main
Một số kỹ thuật liên quan đến hàmNguyễn Văn KhiếtNội dungTham số hàm mainHàm với tham số mặc địnhCác kiểu trả về của hàmHàm inlineCon trỏ hàmTham số hàm mainHàm main có thể nhận vào tham số.Ví dụ:int main(int argc, char* argv[]){ printf(“Hello world!”); return 0;}Argc : số tham sốchar* argv[] : mảng các tham số hàm mainTham số hàm mainVí dụ:Khi chương trình .exe thực thi, các tham số như sau:baitap.exe hello world argc=3argv[0]=baitap.exeargv[1]= helloargv[2]=worldHàm với tham số mặc địnhHàm có tham số mặc định là hàm có một hay nhiều tham số được gán giá trị. Giá trị này sẽ trở thành giá trị mặc định nếu như các lời gọi hàm không có tham số này.Các tham số mặc định phải nằm cuối cùng trong danh sách các hàm số của hàmHàm với tham số mặc định#include int TongKet(int DiemLT, int DiemTH, int DiemCong =0) { return DiemLT+DiemTH+DiemCong; }void main(){ printf("Nguyen Van A : %d\n", TongKet(2,5)); printf("Tran Hoang B : %d\n", TongKet(2,2)); printf("Le Van C : %d\n", TongKet(3,5,1)); printf("Vu Thi D : %d\n", TongKet(2,2,1));}Hàm inlineHàm inline là hàm mà trình biên dịch sẽ copy toàn bộ đoạn code trong định nghĩa hàm vào nơi mà hàm được gọi.Cú pháp:inline KDL Tên_Hàm(cácthamsố){ }Hàm inlineLàm cho chương trình chạy nhanh hơn do không phải tốn chi phí chuyển đổi chỉ thị lệnh mỗi khi gọi hàm và kết thúc hàm.Giảm không gian bộ nhớ do các hàm con chiếm dụng khi được gọiHàm inlineChỉ inline những hàm nhỏ, nếu inline cả những hàm lớn sẽ gây phản tác dụng. Bộ nhớ do hàm inline chiếm giữ có thể làm tăng vùng nhớ chiếm của đoạn code đang thực thi.Hàm inlineinline int min (int x, int y){ if (x int x;int& setx(){ return x;}int main(void){ setx() = 10; printf("x= %d\n",x);}Hàm với tham số là hằngHàm có tham số là hằng, tức là tham số đó không thể thay đổi trong hàm.void func(const int i) { i++; // lỗi biên dịch tại đây}Hàm với giá trị trả về là hằngGiá trị trả về của hàm là hằng, tức ta không thể thay đổi giá trị trả về sau khi gọi hàm#include const int* test() { static int i = 10; return &i;}int main() { // int* p = test(); // lỗi const int* p = test(); printf("%d\n",); //*test() = 1; // lỗi}Hàm với giá trị trả về là hằngHàm trả về là hằng không có giá trị với các kiểu dữ liệu cơ sở.#include const int test() { return 1; }int main() { int k = test(); k = 10; printf("%d\n",k);}Con trỏ hàmCon trỏ hàm là một biến con trỏ, chỉ tới địa chỉ của một hàm.Khi chương trình thực thi, chương trình đó sẽ được đưa lên bộ nhớ chính. Do đó, về mặt bản chất, hàm cũng chỉ là địa chỉCon trỏ hàm#include int plus(int a, int b) { return a+b; }void main() { int a = 10, b=20; int ret = plus(a,b); printf("%d\n",ret);}Con trỏ hàm#include int plus(int a, int b) { return a+b; }void main() { int a = 10, b=20; int (*f)(int,int); f = + int ret = f(a,b); printf("%d\n",ret);}Bài tậpCho biểu thức a ** b. Dựa vào lựa chọn của người dùng mà thay ** thành +,-,*,/. Sử dụng con trỏ hàm.Chuyển các bài tập đã làm trước đây sang cách dùng con trỏ hàm
File đính kèm:
- Lap trinh C Ki thuat tren ham.ppt