0% found this document useful (0 votes)
44 views10 pages

Praktikum 1 - Pointer

1. The document discusses 13 experiments on pointers in C++. The experiments cover basic pointer concepts like addresses of variables, storing addresses in pointers, dereferencing pointers, null pointers, pointer arithmetic, array pointers, passing pointers to functions, returning pointers from functions, and references. 2. Each experiment includes sample C++ code and asks the reader to summarize their conclusions. The goal is to help the reader gain an understanding of pointers and how to use them in C++ programs. 3. Pointers allow accessing and modifying variable values using their memory address rather than their name, and are important for passing arguments by reference and dynamically allocating memory in C++.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
44 views10 pages

Praktikum 1 - Pointer

1. The document discusses 13 experiments on pointers in C++. The experiments cover basic pointer concepts like addresses of variables, storing addresses in pointers, dereferencing pointers, null pointers, pointer arithmetic, array pointers, passing pointers to functions, returning pointers from functions, and references. 2. Each experiment includes sample C++ code and asks the reader to summarize their conclusions. The goal is to help the reader gain an understanding of pointers and how to use them in C++ programs. 3. Pointers allow accessing and modifying variable values using their memory address rather than their name, and are important for passing arguments by reference and dynamically allocating memory in C++.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 10

Pointer

Praktikum 1
Pointer

Untuk memberikan pemahaman kepada anda tentang konsep dasar pointer dan cara
menggunakan dalam program C++, maka cobalah beberapa modul percobaan dibawah ini.

1. Percobaan 1 – Konsep Dasar Pointer 1 – Alamat dari variabel


#include <iostream>
using namespace std;

int main ()
{
int var1;
char var2[10];
cout << "Address of var1 variable: " ;
cout << &var1 << endl;
cout << "Address of var2 variable: " ;
cout << &var2 << endl;
return 0;
}

Dari percobaan diatas, apakah yang dapat anda simpulkan? Jelaskan!

2. Percobaan 2 – Konsep Dasar Pointer 2 – Menggunakan pointer di C++


#include <iostream>
using namespace std;

int main ()
{
int var = 20; // actual variable declaration.
int *ip; // pointer variable
ip = &var; // store address of var in pointer variable
cout << "Value of var variable: " ;
cout << var << endl;
// print the address stored in ip pointer variable
cout << "Address stored in ip variable: " ;
cout << ip << endl;
// access the value at the address available in pointer
cout << "Value of *ip variable: " ;
cout << *ip << endl;
return 0;
}

Praktikum Pemrograman Dasar 2


Pointer

Dari percobaan diatas, apakah yang dapat anda simpulkan? Jelaskan!

3. Percobaan 3 – Konsep Dasar Pointer 3 – Null Pointer


#include <iostream>
using namespace std;

int main ()
{
int *ptr = NULL;
cout << "The value of ptr is " << ptr ;
return 0;
}

Dari percobaan diatas, apakah yang dapat anda simpulkan? Jelaskan!

4. Percobaan 4 – Pointer Arithmetic – Incrementing pointer


#include <iostream>
using namespace std;

const int MAX = 3;

int main ()
{
int var[MAX] = {10, 100, 200};
int *ptr;
// let us have array address in pointer.
ptr = var;
for (int i = 0; i < MAX; i++)
{
cout << "Address of var[" << i << "] = ";
cout << ptr << endl;
cout << "Value of var[" << i << "] = ";
cout << *ptr << endl;
// point to the next location
ptr++;
}
return 0;
}

Dari percobaan diatas, apakah yang dapat anda simpulkan? Jelaskan!

5. Percobaan 5 – Pointer Arithmetic – Decrementing pointer


#include <iostream>
using namespace std;

const int MAX = 3;

Praktikum Pemrograman Dasar 2


Pointer

int main ()
{
int var[MAX] = {10, 100, 200};
int *ptr;
// let us have address of the last element in pointer.
ptr = &var[MAX-1];
for (int i = MAX; i > 0; i--)
{
cout << "Address of var[" << i << "] = ";
cout << ptr << endl;
cout << "Value of var[" << i << "] = ";
cout << *ptr << endl;
// point to the previous location
ptr--;
}
return 0;
}

Dari percobaan diatas, apakah yang dapat anda simpulkan? Jelaskan!

6. Percobaan 6 – Membandingkan pointer


#include <iostream>
using namespace std;

const int MAX = 3;

int main ()
{
int var[MAX] = {10, 100, 200};
int *ptr;
// let us have address of the first element in pointer.
ptr = var;
int i = 0;
while ( ptr <= &var[ MAX - 1] )
{
cout << "Address of var[" << i << "] = ";
cout << ptr << endl;
cout << "Value of var[" << i << "] = ";
cout << *ptr << endl;
// point to the previous location
ptr++;
i++;
}
return 0;
}

Praktikum Pemrograman Dasar 2


Pointer

Dari percobaan diatas, apakah yang dapat anda simpulkan? Jelaskan!

7. Percobaan 7 – Pointer vs Array


#include <iostream>
using namespace std;

const int MAX = 3;

int main ()
{
int var[MAX] = {10, 100, 200};
int *ptr;
// let us have array address in pointer.
ptr = var;
for (int i = 0; i < MAX; i++)
{
cout << "Address of var[" << i << "] = ";
cout << ptr << endl;
cout << "Value of var[" << i << "] = ";
cout << *ptr << endl;
// point to the next location
ptr++;
}
return 0;
}

#include <iostream>
using namespace std;

const int MAX = 3;

int main ()
{
int var[MAX] = {10, 100, 200};
for (int i = 0; i < MAX; i++)
{
*var = i; // This is a correct syntax
var++; // This is incorrect.
}
return 0;
}

Dari dua percobaan diatas, apakah yang dapat anda simpulkan? Jelaskan!

Praktikum Pemrograman Dasar 2


Pointer

8. Percobaan 8 – Array Pointer


#include <iostream>
using namespace std;

const int MAX = 3;

int main ()
{
int var[MAX] = {10, 100, 200};
for (int i = 0; i < MAX; i++)
{
cout << "Value of var[" << i << "] = ";
cout << var[i] << endl;
}
return 0;
}

#include <iostream>
using namespace std;

const int MAX = 3;

int main ()
{
int var[MAX] = {10, 100, 200};
int *ptr[MAX];
for (int i = 0; i < MAX; i++)
{
ptr[i] = &var[i]; // assign the address of integer.
}
for (int i = 0; i < MAX; i++)
{
cout << "Value of var[" << i << "] = ";
cout << *ptr[i] << endl;
}
return 0;
}

#include <iostream>
using namespace std;

const int MAX = 4;

int main ()
{
char *names[MAX] = {

Praktikum Pemrograman Dasar 2


Pointer

"Zara Ali",
"Hina Ali",
"Nuha Ali",
"Sara Ali",
};
for (int i = 0; i < MAX; i++)
{
cout << "Value of names[" << i << "] = ";
cout << names[i] << endl;
}
return 0;
}

Dari tiga percobaan diatas, apakah yang dapat anda simpulkan? Jelaskan!

9. Percobaan 9 – Pointer – Pointer


#include <iostream>
using namespace std;

int main ()
{
int var;
int *ptr;
int **pptr;
var = 3000;
// take the address of var
ptr = &var;
// take the address of ptr using address of operator &
pptr = &ptr;
// take the value using pptr
cout << "Value of var :" << var << endl;
cout << "Value available at *ptr :" << *ptr << endl;
cout << "Value available at **pptr :" << **pptr << endl;
return 0;
}

Dari percobaan diatas, apakah yang dapat anda simpulkan? Jelaskan!

10. Percobaan 10 – Mempassing pointer ke fungsi


#include <iostream>
#include <ctime>
using namespace std;

void getSeconds(unsigned long *par);

Praktikum Pemrograman Dasar 2


Pointer

int main ()
{
unsigned long sec;
getSeconds( &sec );
// print the actual value
cout << "Number of seconds :" << sec << endl;
return 0;
}

void getSeconds(unsigned long *par)


{
// get the current number of seconds
*par = time( NULL );
return;
}

#include <iostream>
using namespace std;

// function declaration:
double getAverage(int *arr, int size);

int main ()
{
// an int array with 5 elements.
int balance[5] = {1000, 2, 3, 17, 50};
double avg;
// pass pointer to the array as an argument.
avg = getAverage( balance, 5 ) ;
// output the returned value
cout << "Average value is: " << avg << endl;
return 0;
}

double getAverage(int *arr, int size)


{
int i, sum = 0;
double avg;
for (i = 0; i < size; ++i)
{
sum += arr[i];
}
avg = double(sum) / size;

return avg;
}

Praktikum Pemrograman Dasar 2


Pointer

Dari dua percobaan diatas, apakah yang dapat anda simpulkan? Jelaskan!

11. Percobaan 11 – Mengembalikan pointer dari fungsi


#include <iostream>
#include <ctime>
using namespace std;

// function to generate and return random numbers.


int * getRandom( )
{
static int r[10];

// set the seed


srand( (unsigned)time( NULL ) );
for (int i = 0; i < 10; ++i)
{
r[i] = rand();
cout << r[i] << endl;
}
return r;
}

// main function to call above defined function.


int main ()
{
// a pointer to an int.
int *p;
p = getRandom();
for ( int i = 0; i < 10; i++ )
{
cout << "*(p + " << i << ") : ";
cout << *(p + i) << endl;
}
return 0;
}

Dari percobaan diatas, apakah yang dapat anda simpulkan? Jelaskan!

12. Percobaan 12 – Referensi


#include <iostream>
using namespace std;

int main ()
{
// declare simple variables
int i;

Praktikum Pemrograman Dasar 2


Pointer

double d;
// declare reference variables
int& r = i;
double& s = d;
i = 5;
cout << "Value of i : " << i << endl;
cout << "Value of i reference : " << r << endl;
d = 11.7;
cout << "Value of d : " << d << endl;
cout << "Value of d reference : " << s << endl;
return 0;
}

Dari percobaan diatas, apakah yang dapat anda simpulkan? Jelaskan!

13. Percobaan 13 – Referensi sebagai parameter


#include <iostream>
using namespace std;

// function declaration
void swap(int& x, int& y);

int main ()
{
// local variable declaration:
int a = 100;
int b = 200;
cout << "Before swap, value of a :" << a << endl;
cout << "Before swap, value of b :" << b << endl;
/* calling a function to swap the values.*/
swap(a, b);
cout << "After swap, value of a :" << a << endl;
cout << "After swap, value of b :" << b << endl;
return 0;
}

// function definition to swap the values.


void swap(int& x, int& y)
{
int temp;
temp = x; /* save the value at address x */
x = y; /* put y into x */
y = temp; /* put x into y */
return;
}

Praktikum Pemrograman Dasar 2


Pointer

Dari percobaan diatas, apakah yang dapat anda simpulkan? Jelaskan!

14. Percobaan 14 – Referensi sebagai nilai pengembalian


#include <iostream>
#include <ctime>
using namespace std;

double vals[] = {10.1, 12.6, 33.1, 24.1, 50.0};

double& setValues( int i )


{
return vals[i]; // return a reference to the ith element
}

// main function to call above defined function.


int main ()
{
cout << "Value before change" << endl;
for ( int i = 0; i < 5; i++ )
{
cout << "vals[" << i << " ] = ";
cout << vals[i] << endl;
}
setValues(1) = 20.23; // change 2nd element
setValues(3) = 70.8; // change 4th element
cout << "Value after change" << endl;
for ( int i = 0; i < 5; i++ )
{
cout << "vals[" << i << "] = ";
cout << vals[i] << endl;
}
return 0;
}

Dari percobaan diatas, apakah yang dapat anda simpulkan? Jelaskan!

Praktikum Pemrograman Dasar 2

You might also like