Programming in C: Unit III (b): Pointers

Arrays of Pointers

with Example C Programs

An array of pointers can be declared as int *ptr [10];The above statement declares an array of 10 pointers where each of the pointer points to an integer variable.

ARRAYS OF POINTERS

An array of pointers can be declared as

int *ptr [10];

The above statement declares an array of 10 pointers where each of the pointer points to an integer variable. For example, look at the code given below.

int *ptr [10];

int p = 1, q = 2, r = 3, s = 4, t = 5;

ptr[0] = &p;

ptr[1] = &q;

ptr [2] = &r;

ptr [3] = &s;

ptr [4] = &t

Can you tell what will be the output of the following statement?

printf("\n %d", *ptr [3]);

The output will be 4 because ptr [3] stores the address of integer variable and *ptr [3] will therefore print the value of s that i value t is 4. Now look at ok at another code in which we store the address of three individual arrays in the array of pointers.

main()

{

int arr1 []={1,2,3,4,5);

int arr2 []=(0,2,4,6,8};

int arr3 []={1,3,5,7,9};

int *parr [3] = (arr1, arr2, arr3);

int i;

for (i = 0;i<3;i++)

printf("%d", *parr[i]);

}

Output

1 0 1

Surprised with this output? Try to understand the concept. In the for loop, parr [0] stores the base address of arr1 (or, &arr1 [0]). So writing *parr [0] will print the value stored at &arr1 [0]. Same is the case with *parr [1] and *parr [2].

Now consider an array of character pointers that points to strings.

char *ptr [3];

In the ptr array, each element is a character pointer. Therefore, we can assign character pointers to the elements of the array. For example,

ptr[0] = str;

Another way to initialize an array of characters with three strings can be given as,

char *ptr[3] = {"Janak", "Raj", "Paul"};

Here, ptr [0] is Janak, ptr[1] is Raj, and ptr [2] is Paul.

The memory layout of ptr can be given as shown in Figure 7.7. It requires only 15 bytes to store the three strings.

However, char str[3] [10] = {"Janak", "Raj", "Paul"}; will behave in the same way as an array of characters. The only difference is the memory layout (Figure 7.8). While the array of pointers needs only 15 bytes of storage, str will reserve 30 bytes in memory, despite the fact that some memory locations will be reserved but not utilized.

Look at the following program that uses an array of character pointer to display the name of the day corresponding to the number.

#include <stdio.h>

char *day_of_week (int);

main()

{

int day_num;

char *day;

printf("\n Enter the day from 1 to 7: ");

scanf("%d", &day_num);

day = day_of_week (day_num);

if (day)

printf("%s", day);

else

printf("\n Invalid Day");

}

char *day_of_week (int day)

{

char *week_day [7] = {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"};

if (day>=1 | | day<=7)

return week_day [day-1];

else

return NULL;

}

Output

Enter the day from 1 to 7: 3

TUESDAY

An array of pointers whose elements point to arrays of varying sizes is called a ragged array. Therefore, array of pointers week_day and ptr in the above discussion are better known as ragged arrays.

Programming in C: Unit III (b): Pointers : Tag: : with Example C Programs - Arrays of Pointers


Programming in C: Unit III (b): Pointers



Under Subject


Programming in C

CS3251 2nd Semester CSE Dept 2021 | Regulation | 2nd Semester CSE Dept 2021 Regulation



Related Subjects


Professional English II

HS3251 2nd Semester 2021 Regulation | 2nd Semester Common to all Dept 2021 Regulation


Statistics and Numerical Methods

MA3251 2nd Semester 2021 Regulation M2 Engineering Mathematics 2 | 2nd Semester Common to all Dept 2021 Regulation


Engineering Graphics

GE3251 eg 2nd semester | 2021 Regulation | 2nd Semester Common to all Dept 2021 Regulation


Physics for Electrical Engineering

PH3202 2nd Semester 2021 Regulation | 2nd Semester EEE Dept 2021 Regulation


Basic Civil and Mechanical Engineering

BE3255 2nd Semester 2021 Regulation | 2nd Semester EEE Dept 2021 Regulation


Electric Circuit Analysis

EE3251 2nd Semester 2021 Regulation | 2nd Semester EEE Dept 2021 Regulation


Physics for Electronics Engineering

PH3254 - Physics II - 2nd Semester - ECE Department - 2021 Regulation | 2nd Semester ECE Dept 2021 Regulation


Electrical and Instrumentation Engineering

BE3254 - 2nd Semester - ECE Dept - 2021 Regulation | 2nd Semester ECE Dept 2021 Regulation


Circuit Analysis

EC3251 - 2nd Semester - ECE Dept - 2021 Regulation | 2nd Semester ECE Dept 2021 Regulation


Materials Science

PH3251 2nd semester Mechanical Dept | 2021 Regulation | 2nd Semester Mechanical Dept 2021 Regulation


Basic Electrical and Electronics Engineering

BE3251 2nd semester Mechanical Dept | 2021 Regulation | 2nd Semester Mechanical Dept 2021 Regulation


Physics for Civil Engineering

PH3201 2021 Regulation | 2nd Semester Civil Dept 2021 Regulation


Basic Electrical, Electronics and Instrumentation Engineering

BE3252 2021 Regulation | 2nd Semester Civil Dept 2021 Regulation


Physics for Information Science

PH3256 2nd Semester CSE Dept | 2021 Regulation | 2nd Semester CSE Dept 2021 Regulation


Basic Electrical and Electronics Engineering

BE3251 2nd Semester CSE Dept 2021 | Regulation | 2nd Semester CSE Dept 2021 Regulation


Programming in C

CS3251 2nd Semester CSE Dept 2021 | Regulation | 2nd Semester CSE Dept 2021 Regulation