PRAKTIKUM V
FUNGSI
I.
Tujuan
- Memecah
program dalam fungsi fungsi yang sederhana.
- Menjelaskan tentang pemrograman terstruktur.
- Mengetahui perbedaan antara variabel lokal,
eksternal, statis dan register
Fungsi adalah suatu bagian dari program yang dirancang untuk melaksanakan
tugas tertentu dan letaknya dipisahkan dari program yang menggunakannya. Elemen utama dari program bahasa C berupa
fungsi-fungsi, dalam hal ini program dari bahasa C dibentuk dari kumpulan
fungsi pustaka (standar) dan fungsi yang dibuat sendiri oleh pemrogram. Fungsi banyak digunakan pada program C dengan
tujuan :
a. Program menjadi
terstruktur, sehingga mudah dipahami dan mudah dikembangkan. Dengan memisahkan langkah-langkah detail ke
satu atau lebih fungsi-fungsi, maka fungsi utama (main()) menjadi lebih
pendek, jelas dan mudah dimengerti.
b. dapat mengurangi pengulangan (duplikasi) kode. Langkah-langkah program yang sama dan dipakai
berulang-ulang di program dapat dituliskan sekali saja secara terpisah dalam
bentuk fungsi-fungsi. Selanjutnya bagian
program yang membutuhkan langkah-langkah ini tidak perlu selalu menuliskannya,
tetapi cukup memanggil fungsi-fungsi tersebut.
1.
Dasar Fungsi
Fungsi standar C
yang mengemban tugas khusus contohnya adalah ;
§
printf() , yaitu
untuk menampilkan informasi atau data ke layar.
§
scanf() , yaitu
untuk membaca kode tombol yang diinputkan.
Pada umumnya fungsi memerlukan nilai masukan atau parameter yang disebut
sebagai argumen. Nilai masukan ini akan diolah oleh fungsi. Hasil akhir fungsi berupa sebuah nilai
(disebut sebagai return value atau nilai keluaran fungsi). Oleh karena itu fungsi sering digambarkan
sebagai "kotak gelap" seperti ditunjukkan pada gambar di bawah ini.
![]() |
|||
|
|||
Gambar 1 Fungsi sebagai sebuah kotak gelap
Penggambaran sebagai kotak gelap di antaranya menjelaskan bahwa bagian
dalam fungsi bersifat pribadi bagi fungsi.
Tak ada suatu pernyataan di luar fungsi yang bisa mengakses bagian dalam
fungsi, selain melalui parameter (atau variabel eksternal yang akan dibahas
belakangan). Misalnya melakukan goto
dari pernyataan di luar fungsi ke pernyataan dalam fungsi adalah tidak
diperkenankan.
Bentuk umum dari definisi sebuah fungsi adalah sebagai berikut ;
|
Keterangan :
§
tipe-keluaran-fungsi,
dapat berupa salah satu tipe data C, misalnya char atau int .
Kalau penentu tipe tidak disebutkan maka dianggap bertipe int (secara default).
§
tubuh fungsi berisi
deklarasi variabel (kalau ada) dan statemen-statemen yang akan melakukan tugas
yang akan diberikan kepada fungsi yang bersangkutan. Tubuh fungsi ini ditulis di dalam tanda
kurung kurawal buka dan kurung kurawal tutup.
Sebuah fungsi yang sederhana bisa saja tidak
mengandung parameter sama sekali dan tentu saja untuk keadaan ini deklarasi
parameter juga tidak ada. Contoh ;
inisialisasi()
{
return(0);
}
Pada fungsi di atas :
§ tipe keluaran fungsi tidak disebutkan, berarti keluaran fungsi ber
tipe int.
§
inisialisasi adalah nama fungsi
§ Tanda () sesudah nama fungsi menyatakan bahwa
fungsi tak memiliki parameter.
§
Tanda {
dan } adalah awal dan akhir
fungsi
§
return(0) merupakan sebuah pernyataan
dalam tubuh fungsi.
inisialisasi()
{
return(0);
}
Gambar 2
Penjelasan definisi sebuah fungsi
2 Memberikan Nilai Keluaran Fungsi
Suatu fungsi dibuat untuk maksud
menyelesaikan tugas tertentu. Suatu fungsi dapat hanya melakukan suatu tugas saja tanpa memberikan suatu hasil
keluaran atau melakukan suatu tugas dan kemudian memberikan hasil keluaran.
Fungsi yang hanya melakukan suatu tugas saja tanpa memberikan hasil keluaran
misalnya adalah fungsi untuk menampilkan hasil di layar.
Dalam tubuh fungsi, pernyataan yang
digunakan untuk memberikan nilai keluaran fungsi berupa return. Sebagai
contoh, pada fungsi inisialisasi() di atas terdapat pernyataan
return(0); merupakan
pernyataan untuk memberikan nilai keluaran fungsi berupa
nol.
nol.
3. Fungsi Dengan Nilai Keluaran Bertipe Bukan Integer
Untuk
fungsi yang mempunyai keluaran bertipe bukan integer, maka fungsi haruslah
didefiniskan dengan diawali tipe keluaran fungsinya (ditulis di depan nama
fungsi).
Khusus
untuk fungsi yang dirancang tanpa memberikan nilai keluaran (melainkan hanya
menjalankan suatu tugas khusus) biasa didefinisikan dengan diawali kata kunci void (di depan nama fungsi). Sebagai contoh perhatikan program di bawah ini.
a. Prototipe Fungsi
Prototipe fungsi
digunakan untuk menjelaskan kepada kompiler mengenai :
§ tipe keluaran
fungsi
§ jumlah parameter
§ tipe dari
masing-masing parameter.
Bagi kompiler, informasi dalam
prototipe akan dipakai untuk memeriksa keabsahan (validitas) parameter dalam
pemanggilan fungsi. Salah satu keuntungannya adalah, kompiler akan melakukan
konversi seandainya antara tipe parameter dalam fungsi dan parameter saat
pemanggilan fungsi tidak sama, atau akan
menunjukan kesalahan bila jumlah parameter dalam definisi dan saat pemanggilan
berbeda.
Contoh prototipe fungsi;
float jumlah
(float x, float y);
atau
float jumlah
(float, float);
Penjelasannya adalah sbb :
![]() |
Gambar 4 Prototipe fungsi
Untuk fungsi yang tidak memiliki argumen
(contoh program void.c), maka deklarasinya adalah
void info_program(void);
![]() |
Catatan :
§
Untuk fungsi-fungsi
pustaka, prototipe dari fungsi-fungsi berada di file-file judulnya (header
file). Misalnya fungsi pustaka printf()
dan scanf() prototipenya berada pada file dengan nama stdio.h
§
Untuk fungsi pustaka
pencantuman pada prototipe fungsi dapat dilakukan dengan menggunakan preprocessor directive #include.
5.
Parameter formal dan Parameter Aktual
Parameter formal adalah variabel yang ada pada daftar parameter dalam
definisi fungsi. Pada contoh program di atas misalnya, maka dalam fungsi jumlah()
variabel x dan y dinamakan sebagai parameter formal. Adapun parameter aktual adalah parameter
(tidak selalu berupa variabel) yang dipakai dalam pemanggilan fungsi.
![]() |
|||
![]() |
|||
Gambar 5 Paramater formal dan parameter
aktual
Pada pernyataan :
x
= jumlah(a, b);
y = jumlah(20.1, 45.6);
a dan b merupakan parameter aktual dari
fungsi jumlah() dalam hal ini parameter berupa variabel. Demikian juga 20.1 dan 45.6 adalah parameter aktual, dalam
hal ini berupa konstanta. Bahkan bisa
juga parameter aktual berupa ungkapan yang melibatkan operator, misalnya :
|
|||
6. Cara melewatkan Parameter
Ada dua cara
untuk melewatkan parameter kedalam fungsi, yaitu berupa ;
§
Pemanggilan dengan nilai (call
by value)
§
Pemanggilan dengan
referensi (call by reference)
Pemanggilan dengan nilai merupakan cara yang
dipakai untuk seluruh fungsi buatan yang telah dibahas didepan. Pada
pemanggilan dengan nilai, nilai dari parameter aktual akan disalin ke parameter
formal. Dengan cara ini nilai parameter aktual tidak bisa dirubah sekalipun
nilai parameter formal berubah. Untuk lebih jelasnya lihat pada fungsi tukar().
Tampak
bahwa sekeluarnya dari pemanggilan fungsi tukar(), variabel a dan
b (yang dilewatkan ke fungsi tukar() tidak berubah, walaupun pada
fungsi tukar() telah terjadi penukaran antara parameter x dan y
. Mengapa hal ini bisa terjadi ? Sebab x hanyalah salinan dari a
dan y adalah salinan dari b (Lihat gambar 5.6 di bawah ini). Pada saat pemanggilan fungsi, maka :
x
bernilai 88 (nilai a),
y bernilai 77 (nilai b). Sesudah
pernyataan-pernyataan berikut dijalankan, maka :
z = x;
x = y;
y = z;
x akan bernilai 77 dan y bernilai 88.
Gambar 6 Proses penukaran nilai
Gambar 5.6 menjelaskan bahwa a dan b
tidak berubah. Yang berubah hanyalah
parameter x dan y.
Pemanggilan
dengan referensi (call by reference) merupakan upaya untuk melewatkan
alamat dari suatu variabel ke dalam fungsi.
Cara ini dapat dipakai untuk mengubah isi suatu variabel di luar fungsi
dengan pelaksanaan pengubahan dilakukan di dalam fungsi.
bahwa px dan py
adalah suatu variabel pointer. Yang
dimaksudkan sebagai variabel pointer adalah suatu variabel yang menunjuk ke
variabel lain. Lebih jelasnya, variabel
pointer berisi alamat dari variabel lain. Adapun pada pemanggilan
fungsi, &a dan &b masing-masing berarti "alamat
a" dan "alamat b". Dengan
pemanggilan seperti ini, hubungan antara variabel pointer px dan py
dengan variabel a dan b adalah seperti ditunjukkan pada gambar
5.7. Dalam hal ini, px dikatakan
menunjuk variabel a dan py menunjuk variabel b.
|
|||||
![]() |
|||||
![]() |
|||||
Gambar 7
Variabel pointer px menunjuk variabel a
dan variabel pointer py menunjuk variabel b. px menunjuk a dan py
menunjuk b, proses penukaran isi a dan b dilakukan dengan
cara sebagai berikut :
z
= *px; /*
1 */
*px
= *py; /* 2 */
*py
= z; /*
3 */
Pertama variabel
z diisi dengan nilai yang ditunjuk oleh px. Kedua, yang ditunjuk oleh px diisi
dengan yang ditunjuk oleh py (berarti a diisi dengan b). Ketiga, yang ditunjuk oleh py
diberi nilai z. Dengan melalui tiga pernyataan di atas, nilai
a dab b dapat diubah di dalam fungsi.
Catatan :
Pembahasan lebih lanjut mengenai pointer dapat dilihat pada bab VIII.
1.
Penggolongan Variabel
berdasarkan kelas Penyimpanan
Suatu variabel, di samping
dapat digolongkan berdasarkan jenis/tipe data juga dapat diklasifikasikan
berdasarkan kelas penyimpanan (storage class).
Penggolongan berdasarkan kelas penyimpanan berupa :
§
variabel lokal
§
variabel eksternal
§
variabel statis
§
variabel register
7.1 Variabel Lokal
Variabel lokal
adalah variabel yang dideklarasikan dalam fungsi, dengan sifat :
§ secara otomatis diciptakan ketika fungsi dipanggil dan
akan sirna (lenyap) ketika eksekusi terhadap fungsi berakhir.
§ Hanya dikenal oleh fungsi tempat variabel tersebut
dideklarasikan
§ Tidak ada inisialisasi secara otomatis (saat variabel
diciptakan, nilainya tak menentu).
Dalam
banyak literatur, variabel lokal disebut juga dengan variabel otomatis. Variabel yang termasuk dalam golongan ini
bisa dideklarasikan dengan menambahkan kata kuci auto di depan
tipe-data variabel. Kata kunci ini
bersifat opsional, biasanya disertakan sebagai penjelas saja. Contoh variabel lokal ditunjukkan pada gambar
8.
![]() |
|||
Gambar 8 Variabel lokal
Pada fung_x(), deklarasi
int x;
dapat ditulis menjadi
auto int x;
Penerapan
variabel lokal yaitu bila variabel hanya dipakai oleh suatu fungsi (tidak
dimaksudkan untuk dipakai oleh fungsi yang lain). Pada contoh berikut, antara variabel i
dalam fungsi main() dan fung_1() tidak ada kaitannya, sebab
masing-masing merupakan variabel lokal.
7.2.Variabel Eksternal
Variabel eksternal merupakan variabel yang
dideklarasikan di luar fungsi, dengan sifat :
§ dapat diakses oleh
semua fungsi
§ kalau tak diberi
nilai, secara otomatis diinisialisasi dengan nilai sama dengan nol.
Contoh variabel eksternal ada
pda program ekstern1.c yaitu berupa variabel i. Pada
pendeklarasian
int i = 273;
menyatakan bahwa i merupakan variabel
eksternal dan diberi nilai awal sama denan 273.
Nilai dari variabel i selanjutnya dapat diubah oleh fungsi tambah()
maupun main(). Setiap fungsi tambah()
dipanggil maka nilai i akan bertambah satu. bahwa i hanya
dideklarasikan di bagian atas program, dan tak dideklarasikan lagi dalam fungsi
main() maupun tambah(). Oleh karena i merupakan variabel
eksternal maka dapat digunakan oleh kedua fungsi tsb. Namun ada satu hal yang perlu diketahui,
variabel eksternal haruslah dideklarasikan sebelum definisi fungsi yang akan
mempergunakannya.
Untuk
memperjelas bahwa suatu variabel dalam fungsi merupakan variabel eksternal, di
dalam fungsi yang menggunakannya dapat mendeklarasikan variabel itu kembali
dengan menambahkan kata kunci extern di depan tipe data variabel
Kalau dalam suatu program terdapat suatu variabel eksternal, suatu fungsi
bisa saja menggunakan nama variabel yang sama dengan variabel eksternal, namun
diperlakukan sebagai variabel lokal.
Untuk lebih jelasnya perhatikan contoh
program di bawah ini. fungsi main()
i adalah variabel eksternal.
Namun bagi fungsi tambah(), i merupakan variabel lokal,
sebab pada fungsi ini i dideklarasikan tanpa kata kunci extern. Hal ini terlihat jelas dengan mengamati hasil
eksekusi program. Pernyataan:
i++;
Pada fungsi tambah()
tidak mempengaruhi nilai i yang ditampilkan pada fungsi main().
7.3 Variabel Statis
Variabel
statis dapat berupa variabel internal (didefinisikan di dalam fungsi) maupun
variabel eksternal. Sifat variabel ini :
§ Kalau variabel statis bersifat internal, maka variabel
hanya dikenal oleh fungsi tempat variabel dideklarasikan
§ Kalau variabel statis bersifat eksternal, maka variabel
dapat dipergunakan oleh semua fungsi yang terletak pada file yang sama, tempat
variabel statis dideklarasikan
§ Berbeda dengan variabel lokal, variabel statis tidak akan
hilang sekeluarnya dari fungsi (nilai pada variabel akan tetap diingat).
§ Inisialisasi akan dilakukan hanya sekali, yaitu saat
fungsi dipanggil yang pertama kali.
Kalau tak ada inisialisasi oleh pemrogram secara otomatis akan diberi
nilai awal nol. Variabel statis diperoleh dengan
menambahkan kata kunci static di depan tipe data variabel.
7.4 Variabel Register
Variabel
register adalah variabel yang nilainya disimpan dalam register dan bukan dalam
memori RAM. Variabel yang seperti ini
hanya bisa diterapkan pada variabel yang lokal atau parameter formal, yang
bertipe char atau int. Variabel register biasa diterapkan pada
variabel yang digunakan sebagai pengendali loop. Tujuannya untuk mempercepat proses dalam loop. Sebab variabel yang dioperasikan pada
register memiliki kecepatan yang jauh lebih tinggi daripada variabel yang
diletakkan pada RAM.
8 Menciptakan Sejumlah Fungsi
Pada C, semua fungsi bersifat
sederajat. Suatu fungsi tidak dapat
didefinisikan di dalam fungsi yang lain.
Akan tetapi suatu fungsi diperbolehkan memanggil fungsi yang lain, dan
tidak tergantung kepada peletakan definisi fungsi pada program. Komunikasi antara fungsi dalam C ditunjukkan
dalam gambar 5.9. Gambar tersebut
menjelaskan kalau suatu fungsi katakanlah fungsi_a() memanggil
fungsi_b(), maka bisa saja fungsi_b() memanggil
fungsi_a(). Contoh program yang melibatkan fungsi yang
memanggil fungsi yang lain ada pada program kom_fung.c, yaitu fungsi_1() dipanggil dalam main(), sedangkan
fungsi_2() dipanggil oleh fungsi_1().
![]() |
Gambar 9
Komunikasi antar fungsi dalam C
9 Rekursi
Fungsi dalam C dapat dipakai secara
rekursi, dalam artian suatu fungsi dapat memanggil dirinya sendiri. Sebagai contoh penerapan fungsi rekursi yaitu untuk menghitung nilai
xn
dengan n berupa
bilagnan bulat positif. Solusi
dari persoalan ini dapat berupa :
§ Jika n = 1, maka
xn = x
§ Selain itu maka xn = x * xn-1
Misalnya x = 2
dan n = 3, proses pemecahannya seperti diuraikan pada gambar 5.10.
|
||||||||||||||||||||||
![]() |
||||||||||||||||||||||
![]() |
||||||||||||||||||||||
![]() |
||||||||||||||||||||||
|
||||||
|
||||||
|
||||||
Gambar.10
Pemecahan secara rekursi
Rekursi jarang dipakai, di antaranya disebabkan :
§ Biasanya rekursi akan menjadikan fungsi sulit
dimengerti. Hanya cocok untuk persoalan
tertentu saja (misalnya pada binary tree atau pohon biner). Untuk fungsi rekursi pada program faktor.c di
atas misalnya, akan lebih mudah dipahami kalau ditulis menjadi :
int faktorial(int m)
{
int
i, fak;
fak
= 1;
for(i
= 1; i <= m; i++)
fak = fak * i;
return(fak);
}
§ Memerlukan stack dengan ukuran yang lebih
besar. Sebab setiap kali fungsi
dipanggil, variabel lokal dan parameter formal akan ditempatkan ke stack dan
adakalanya akan menyebabkan stack tak cukup lagi (stack overflow).
10
Pengenalan Konsep Pemrograman Terstruktur
Fungsi
sangat bermanfaat untuk membuat program yang terstruktur. Suatu program yang
terstruktur dikembangkan dengan menggunakan “top-down design” (rancang
atas bawah). Pada C suatu program disusun dari sejumlah fungsi dengan tugas
tertentu. Selanjutnya masing masing fungsi dipecah-pecah lagi menjadi fungsi
yang lebih kecil. Pembuatan program dengan cara ini akan memudahkan dalam
pencarian kesalahan ataupun dalam hal pengembangan dan tentu saja mudah
dipahami/ dipelajari.
Dalam
bentuk diagram, model suatu program C yang terstruktur adalah seperti yang
tertera pada bagan berikut ini. Namun
sekali lagi perlu diketahui, bahwa pada C semua fungsi sebenarnya berkedudukan
sederajat.
Fungsi main()
terdiri dari fungsi_a() sampai dengan fungsi_n(), menegaskan
bahwa dalam program fungsi main() akan memanggil fungsi_a()
sampai dengan fungsi_n(). Adapun fungsi-fungsi yang dipanggil oleh fungsi main() juga
bisa memanggil fungsi-fungsi yang lain.
![]() |
fungsi utama
main()
fungsi_a() … fungsi_n()
fungsi_a1() …
fungsi_am()
Gambar 11 Model terstruktur Program C
III. Daftar Alat dan Bahan.
1. CPU
2. Monitor
3. Keyboard
4. Mouse
5. Printer
6. Job Sheet Praktikum
IV. Langkah Kerja.
1. Menghidupkan Komputer sampai menyala dan
mengeluarkan layar Windows.
2. Memilih Start pada ujung kiri bawah monitor.
3. Memilih Program.
4.
Memilih Program Turbo C atau TC for windows.
5.
Apabila Layar Turbo C sudah keluar, Memilih File.
6.
Memilih News untuk membuka Program baru, atau open untuk membuka
file program yang sudah dibuat sebelumnya.
7.
Mengetik Program sesuai dengan data pada program.
8.
Setelah selesai pengetikan, memilih file dan mengesave as program tersebut dengan nama
file sesuai keinginan.
9.
Mencompile program tersebut untuk melihat kebenaran pengetikan
program dan untuk mengubah file dengan extension .cpp menjadi file .hex, .bin
dan. .obj.
10. Setelah sukses mencompile maka memilih run untuk menjalankan program
tersebut.
11. Melihat hasilnya pada monitor dan mencatat, kemudian menganalisa hasil percobaan tersebut.
12. Melakukan praktikum untuk file data program berikutnya dengan cara yang sama.
V. Data Program
/* File program :ulang.c */
#include <stdio.h>
void cetak_pesan(void);
main()
{
int
i;
for(i=1;
i<=5; i++)
cetak_pesan();
printf("\n");
}
void cetak_pesan()
{
printf("Cetak pesan ini\n");
}

2. Fungsi untuk menghitung jumlah
triangular n
/* File program : triangular.c */
#include <stdio.h>
void
hitung_triangular(int);
void
main()
{
hitung_triangular(10);
hitung_triangular(20);
hitung_triangular(50);
}
void
hitung_triangular(int n)
{
int i, jumlah = 0;
for (i=1; i <= n; i++)
jumlah = jumlah + i;
printf("Jumlah triangular %d
adalah %d\n",
n, jumlah);
}

3.
Menentukan faktor pembagi terbesar dari 2 bilangan bulat positif.
/* File program : fpb1.c */
#include <stdio.h>
void fpb(int, int);
main()
{
fpb(150,
35);
fpb(1026,
405);
fpb(83,
240);
}
void fpb(int u, int v)
{
int tampung;
printf("FPB dari %d dan %d adalah
", u, v);
while(v != 0)
{
tampung = u % v;
u = v;
v = tampung;
}
printf("%d\n", u);
}

4. Menentukan faktor pembagi terbesar dari
2 bilangan bulat positif dan memberikan nilai kembali (return value)-nya.
/* File program : fpb2.c */
#include <stdio.h>
int fpb(int, int);
void main()
{
int
hasil;
hasil
= fpb(150, 35);
printf("FPB
dari 150 dan 35 adalah %d\n", hasil);
hasil
= fpb(1026, 405);
printf("FPB
dari 1026 dan 405 adalah %d\n", hasil);
printf("FPB dari 83 dan 240 adalah
%d\n",
fpb(83, 240));
}
int fpb(int u, int v)
{
int
tampung;
while(v
!= 0)
{
tampung
= u % v;
u = v;
v = tampung;
}
return(u);
}

/* File program : absolut.c */
float
nilai_absolut(float);
main()
{
float f1 = -15.5f, hasil;
hasil = nilai_absolut(f1);
printf("Nilai absolut dari %g adalah
%g\n", f1, hasil);
printf("Nilai absolut dari -6/4
adalah %g\n",
nilai_absolut((-6)/4));
}
float
nilai_absolut(float x)
{
if(x < 0)
x = -x;
return(x);
}

6.
Fungsi dengan keluaran bertipe float.
/*
File program : minimum.c */
#include
<stdio.h>
float
minimum (float, float);
main()
{
float a, b, kecil;
printf("Masukkan nilai a : ");
scanf("%f", &a);
printf("Masukkan nilai b : ");
scanf("%f", &b);
kecil = minimum(a, b);
printf("\nBilangan terkecil antara %g
dan %g adalah
%g\n\n", a, b, kecil);
}
float
minimum(float x, float y)
{
if (x < y)
return(x);
else
return(y);
}

7. Untuk melihat pengaruh pemanggilan nilai pada
fungsi untuk penukaran dua bilangan.
/*
File program : tukar.c */
#include
<stdio.h>
void
tukar (int, int);
main()
{
int a,b;
a=88;
b=77;
printf("Nilai
sebelum pemanggilan fungsi\n");
printf("a
= %d b = %d\n", a, b);
tukar(a,b);
printf("\nNilai
setelah pemanggilan fungsi\n");
printf("a
= %d b = %d\n", a, b);
}
void tukar(int x, int y)
{
int
z;
z
= x;
x
= y;
y
= z;
printf("\nNilai
di akhir fungsi tukar()\n");
printf("x
= %d y = %d\n", x, y);
}

8. Ilustrasi variabel auto dan static.
/*
File program : auto.c */
#include
<stdio.h>
void
demo(void); /* ANSI function
prototypes */
main()
{
int
i=0;
while(i
< 3) {
demo();
i++;
}
}
void demo(void)
{
auto
int var_auto = 0;
static
int var_static = 0;
printf("auto
= %d, static = %d\n", var_auto, var_static);
++var_auto;
++var_static;
}














No comments:
Post a Comment