Explain the relation to array and pointer.
Explain the relation to array and pointer. Differentiate call by value and call by reference with a suitable program.
Arrays and pointers are closely related concepts in C:
Relation to Array:
- In C, the name of an array can be treated as a pointer to its first element.
- For example, if
arr
is an array,arr
is equivalent to&arr[0]
. - You can use pointer arithmetic to access elements of an array, like
*(arr + i)
to access the ith element ofarr
.
Pointer:
- A pointer is a variable that stores the memory address of another variable.
- Pointers can be used to indirectly access the value of a variable or to dynamically allocate memory.
Now, let's differentiate between call by value and call by reference:
- Call by Value:
- In call by value, the actual value of the arguments is passed to the function.
- Changes made to the parameters inside the function do not affect the original variables.
- This method creates a copy of the arguments, and any modifications made to these copies do not affect the original values.
- Call by Reference:
- In call by reference, the memory address of the actual arguments is passed to the function.
- Changes made to the parameters inside the function affect the original variables.
- This method allows the function to directly access and modify the original values passed to it.
Here's a program demonstrating both methods:
#include <stdio.h>
// Function to increment a value using call by value
void incrementByValue(int x) {
x++;
printf("Inside incrementByValue function: x = %d\n", x);
}
// Function to increment a value using call by reference
void incrementByReference(int *x) {
(*x)++;
printf("Inside incrementByReference function: *x = %d\n", *x);
}
int main() {
int num = 5;
// Call by value
printf("Before calling incrementByValue function: num = %d\n", num);
incrementByValue(num);
printf("After calling incrementByValue function: num = %d\n", num);
// Call by reference
printf("\nBefore calling incrementByReference function: num = %d\n", num);
incrementByReference(&num);
printf("After calling incrementByReference function: num = %d\n", num);
return 0;
}
In this program, incrementByValue
function increments the value of x
using call by value, while incrementByReference
function increments the value of x
using call by reference by accepting a pointer to x
. The difference in behavior between the two methods is demonstrated by observing the changes in the original variable num
.
Post a Comment