120 likes | 249 Views
Pemrograman Dasar. Pointers. Memori Dinamis. Pada saat menggunakan array, kita sering terbatasi oleh jumlah elemen yang tidak dapat diubah. Dengan menggunakan pointer, masalah tersebut dapat diatasi. C++ menyediakan perintah new, new[], delete dan delete[] untuk mengatur pemakaian memori.
E N D
Pemrograman Dasar Pointers
Memori Dinamis • Pada saat menggunakan array, kita sering terbatasi oleh jumlah elemen yang tidak dapat diubah. Dengan menggunakan pointer, masalah tersebut dapat diatasi. • C++ menyediakan perintah new, new[], delete dan delete[] untuk mengatur pemakaian memori. • Perintah new mengalokasikan memori, sedangkan perintah delete membebaskan memori. • Perintah new dan delete digunakan untuk variabel biasa, sedangkan perintah new[] dan delete[] digunakan untuk array.
Contoh memori dinamis • int main () { • int jumlah, i, total=0; • int *pAngka; • cout<<"Masukkan jumlah bilangan:";cin>>jumlah; • pAngka = new int[jumlah]; • for (i=0; i<jumlah; i++) { • cout<<"Input angka ke-"<<(i+1)<<":"; • cin>>pAngka[i]; • } • cout<<"Angka yang Anda masukkan:"<<endl; • for (i=0; i<jumlah; i++) { • cout<<pAngka[i]<<", "; • total+=pAngka[i]; • } • cout<<"\nTotalnya:"<<total<<endl; • system("pause"); • return 0; • }
Pointer dan fungsi • Suatu fungsi dapat menerima argumen berupa referensi . • Cara 1: • tipeData namaFungsi (tipeData &argumen) { argumen = sesuatu; return sesuatu2; • } • Dipanggil dengan: namaFungsi(variabel); • Cara 2: • tipeData namaFungsi (tipeData *argumen) { *argumen = sesuatu; return sesuatu2; • } • Dipanggil dengan: namaFungsi(&pointer);
Pointer dan fungsi • string strToUpper(string str) { • for (int i=0; i<str.length(); i++) { • str[i] = toupper(str[i]); • } • return str; • } • int main () { • string nama = "Fandi Susanto"; • nama = strToUpper(nama); • cout<<nama<<endl; • system("pause"); • return 0; • }
Pointer dan fungsi • string strToUpper(string &str) { • for (int i=0; i<str.length(); i++) { • str[i] = toupper(str[i]); • } • return str; • } • int main () { • string nama = "Fandi Susanto"; • strToUpper(nama); • cout<<nama<<endl; • system("pause"); • return 0; • }
Pointer dan fungsi • void strToUpper(string &str) { • for (int i=0; i<str.length(); i++) { • str[i] = toupper(str[i]); • } • //return str; • } • int main () { • string nama = "Fandi Susanto"; • strToUpper(nama); • cout<<nama<<endl; • system("pause"); • return 0; • }
Pointer dan fungsi • void strToUpper(string *str) { • for (int i=0; i< (*str).length(); i++) { • (*str)[i] = toupper( (*str)[i] ); • } • } • int main () { • string nama = "Fandi Susanto"; • strToUpper(&nama); • cout<<nama<<endl; • system("pause"); • return 0; • }
Pointer dan fungsi • (*str).length() tidak sama dengan *str.length() • *str.length() sama dengan *(str.length()) • (*str).length() bisa juga ditulis str->length() • void strToUpper(string *str) { • for (int i=0; i< str->length(); i++) { • (*str)[i] = toupper( (*str)[i] ); • } • } • int main () { • string nama = "Fandi Susanto"; • strToUpper(&nama); • cout<<nama<<endl; • system("pause"); • return 0; • }
Pointer dan struktur • Misalkan terdapat sebuah struktur: • struct Mahasiswa { • string NPM; • string nama; • }; • Dan sebuah pointer Mahasiswa *pMhs • Maka pernyataan (*pMhs).NPM ekivalendengan pMhs->NPM yang berarti NPM dari struktur yang ditunjuk pointer pMhs. • Berbeda dengan pernyataan *pMhs.NPM yang ekivalen dengan *(pMhs.NPM) yang berarti nilai yang ditunjuk oleh pMhs.NPM (pMhs.NPM harus berupa pointer).
Contoh pointer ke struktur • struct Mahasiswa { • string NPM; • string nama; • }; • int main () { • Mahasiswa mahasiswa1; • Mahasiswa *pMahasiswa = &mahasiswa1; • cout<<"Masukkan NPM mahasiswa: "; • getline(cin,pMahasiswa->NPM); • cout<<"Masukkan nama mahasiswa: "; • getline(cin,pMahasiswa->nama); • cout<<"\nNPM mahasiswa:"<<pMahasiswa->NPM<<endl; • cout<<"Nama mahasiswa:"<<pMahasiswa->nama<<endl; • system("pause"); • return 0; • }
Thank You for your attention • Thanks to: • cplusplus.com • Pemrograman C++ by Abdul Kadir • Yoannita S.Kom & Hermawan S.Kom Sumber slide