You are here: Home » Content » Pointers

1. OBJECTIVE

The objectives of Lab session 7 are to get familiar with how to use pointers in C++.

2. EXPERIMENT

2.1 Run the following program to determine the size of two data types long and byte.
# include <iostream.h>
void main()
{
byte* a;
long* b;
cout<<sizeof(a)<<endl;
cout<<sizeof(b)<<endl;
}
2.2 Given the following code segment:
float pay;
float *ptr_pay;
pay=2313.54;
ptr_pay = &pay;
determine the values of the following expressions:
a. pay
b. *ptr_pay
c. *pay
d. &pay
2.3 Read for understanding the following program:
#include<iostream.h>
void main()
{
int a;
int *aPtr; // aPtr is a pointer to an integer
a = 7;
aPtr = &a; //aPtr set to address of a
cout << “The address of a is “ << &a
<< “\nThe value of aPtr is “ << aPtr;
cout << “\n\nThe value of a is “<< a
<< “\nThe value of *aPtr is “ << *aPtr
<< endl;
}
Run the program and explain the output.
2.4 Given the following array and pointer declarations:
int ara[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int *ip1, *ip2;
Determine which of the following assignments are valid.
a. ip1 = ara;
b. ip2 = ip1 = &ara[3];
c. ara = 15;
d. *(ip2 + 2) = 15; // Assuming ip2 and ara are equal.
2.5 Run the following program and explain the output.
#include <iostream.h>
void swap(int a[], int *c1, int *c2, int *d1, int *d2);
void main()
{
int a[2], c1, c2,d1,d2;
int *x1, *x2, *y1, *y2;
a[0] = 1 ; a[1] =2;
c1 = 1; c2 =2;
d1 = 1; d2 =2;
x1 = &c1; x2 = &c2;
y1 = &d1; y2 = &d2;
swap(a, x1,x2,y1,y2);
cout<<a[0]<<a[1]<<” “
<< *x1<<*x2<<” ”
<<*y1<<*y2;
swap(a, x1,x2,y1,y2);
cout<<a[0]<<a[1]<<” “
<< *x1<<*x2<<” ”
<<*y1<<*y2;
}
void swap(int a[], int *c1, int *c2, int *d1, int *d2)
{
a[0] = 2 ; a[1] =1;
*c1=2, *c2 =1;
int* temp = d1;
d1 =d2;
d2 = temp;
}
2.6 Write a declaration to store the following values into an array named rates: 12.9, 18.6, 11.4, 13.7, 9.5, 15.2, 17.6. Include the declaration in a program that displays the values in the array using pointer notation.
2.7 Given the following function that can find the largest element in an integer array. Notice that the function scans the elements in the array using pointer arithmetic:
int findMax(int * vals, int numEls)
{
int j, max = *vals;
for (j = 1; j < numEls; j++)
if (max < *(vals + j))
max = *(vals + j);
return max;
}
Write a C++ program that inputs an integer array and invokes the above function to find the largest element in that array and displays the result out.
2.8 In the following program, the function str_output() can display a string which is passed to it as a a pointer parameter:
#include<iostream.h>
#include<string.h>
#define MAX 80
void str_output(char *);
int main()
{
char a[MAX], b[MAX];
cin.getline(a, MAX, '\n');
str_output(a);
cout << endl;
strcpy(b,a);
str_output(b);
cout<< endl;
return 0;
}
void str_output(char *ptr)
{
………..
}
a. Complete the function str_output() which displays each element in the string using pointer notation.
b. Run to test the whole program.
2.9 a. Write a function named days() that determines the number of days from the date 1/1/1900 for any date passed as a structure. Use the Date structure:
struct Date
{
int month;
int day;
int year;
}
In writing the days() function, use the convention that all years have 360 days and each month consists of 30 days. The function should return the number of days for any Date structure passed to it.
b. Rewrite the days() function to receive a pointer to a Date structure rather than a copy of the complete structure.
c. Include the function written in b) in a complete C++ program.

Comments, questions, feedback, criticisms?

Send feedback