C and C++

Parameter Passing Techniques

When writing functions in C, one key concept every programmer must understand is how parameters are passed. This affects whether your function works with a copy of data or directly modifies the original variable.

In C, there are two main parameter passing techniques:

 1. Pass by Value (Default in C)

Pass by value means the function receives a copy of the variable’s value. Any changes made inside the function do not affect the original variable.

#include <stdio.h>

void changeValue(int a) {
a = 50;
}

int main() {
int x = 10;
changeValue(x);
printf("x = %d\n", x); // Output: x = 10
return 0;
}
Explanation: Here, a is a copy of x. Changing a doesn't impact the original x.

2. Pass by Reference (Using Pointers)

C does not support pass by reference directly, but you can simulate it using pointers. When you pass the address of a variable to a function, it can modify the original value.

#include <stdio.h>

void changeValue(int *a) {
*a = 50;
}

int main() {
int x = 10;
changeValue(&x);
printf("x = %d\n", x); // Output: x = 50
return 0;
}

Explanation: Here, a is a pointer to x. By dereferencing it with *a, we modify the original variable.

What About Arrays?

In C, arrays are always passed by reference by default. When you pass an array to a function, it receives a pointer to the first element.

void updateArray(int arr[]) {
arr[0] = 99;
}

int main() {
int nums[3] = {1, 2, 3};
updateArray(nums);
printf("%d\n", nums[0]); // Output: 99
return 0;
}