Để truyền tham số có kiểu mảng, ta dùng cú pháp
Kieu_Tra_Ve Ten_Ham(Kieu_PT_Mang a[] ,...)
Ví dụ:
/* Hàm sắp xếp 1 mảng nguyên a gồm N phần tử */ void SX_NoiBot(int a[], int N)
{ int i,j,tmp; for(i=0;i<N-1;i++) for(j=0;j<N-i-1;j++) if(a[j]>a[j+1]) { tmp=a[j];a[j]=a[j+1];a[j+1]=tmp;} } void main() { int a[10]={9,2,7,4,3,6,1,12,8,5}, i; SX_NoiBot(a,10);
for(i=0;i<10;i++) printf( %3d ,a[i]);“ ”
3.13 Hàm (function) Ngoài cách dùng hàm thông thư Ngoài cách dùng hàm thông thư
ờng đã biết, ta còn có thể dùng hàm dưới dạng con trỏ tới hàm.
Cách này thường được dùng trong trường hợp ta cần lập trình gọi hàm một cách tổng quát. Ví dụ: #include <stdio.h> #include <math.h> double dien_tich_hinh_tron(float bk) { return(3.14*bk*bk); }
typedef double (*fptr)(float); void main()
{
Trong C, hàm còn có thể có tính đệ quy (recursive): Một hàm có thể có lời gọi đến chính nó.
Ví dụ: Tính giai thừa của một số N
#include <stdio.h> #include <math.h> long giai_thua(int N) { return(N<=1? 1:N * giai_thua(N- 1)); } void main() { printf( 4!=%d\n", giai_thua(4));“
85Object-Oriented Programming (OOP) Object-Oriented Programming (OOP)
3.13 Hàm (function)-Các tham số cho hàm main() C cung cấp cho ta một cách để C cung cấp cho ta một cách để
truyền tham số cho chương trình khi ta chạy chương trình thông qua các tham số của hàm main()
cú pháp như sau:
main( int argc, char *argv[] )
Trong đó:
“argc là số tham số”
“argv[] là mảng chứa giá trị ”
các tham số.
Nhưng argv[0] là tên của chương trình, như vậy giá trị tham số bắt đầu từ argv[1].
Ví dụ:
#include <stdio.h>
main( int argc, char *argv[] ) {
if( argc == 2 )
printf("The argument supplied is %s\n", argv[1]);
else if( argc > 2 )
printf("Too many arguments supplied.\n");
else
printf("One argument expected.\n");
3.13 Hàm (function)- Gọi các chương trình ngoài Ta có thể thực hiện các Ta có thể thực hiện các