Implications of Passing an Array and a Pointer to an Array as Function Arguments in C

12 Sep 2023 Balmiki Mandal 0 C Programming

Passing an array as a function argument

When an array is passed as a function argument, the entire array is passed by reference. This means that any changes made to the array inside the function will be reflected in the original array outside the function.

For example, the following function sums the elements of an array:

C-Programming
int sum_array(int arr[], int size) {
  int sum = 0;
  for (int i = 0; i < size; i++) {
    sum += arr[i];
  }
  return sum;
}

The function takes two arguments: the array and its size. The array is passed by reference, so any changes made to the array inside the function will be reflected in the original array outside the function.

For example, the following code calls the sum_array() function to sum the elements of the array arr:

C- Programming
int arr[] = {1, 2, 3, 4, 5};
int sum = sum_array(arr, sizeof(arr) / sizeof(arr[0]));

The sum_array() function will sum the elements of the array arr and return the sum. The value of the sum will be stored in the variable sum.

Passing a pointer to an array as a function argument

When a pointer to an array is passed as a function argument, only the address of the array is passed. This means that changes made to the array inside the function will not be reflected in the original array outside the function.

For example, the following function prints the elements of an array:

C-Programming
void print_array(int *arr, int size) {
  for (int i = 0; i < size; i++) {
    printf("%d\n", arr[i]);
  }
}

The function takes two arguments: the pointer to the array and its size. The pointer to the array is passed by value, so changes made to the pointer inside the function will not be reflected in the original pointer outside the function.

For example, the following code calls the print_array() function to print the elements of the array arr:

C-Programming
int arr[] = {1, 2, 3, 4, 5};
print_array(arr, sizeof(arr) / sizeof(arr[0]));

The print_array() function will print the elements of the array arr. The changes made to the pointer inside the function will not be reflected in the original pointer outside the function.

Here are some examples of the implications of passing an array and a pointer to an array as function arguments in C:

  • If you pass an array as a function argument, any changes made to the array inside the function will be reflected in the original array outside the function.
  • If you pass a pointer to an array as a function argument, only the address of the array is passed. Changes made to the array inside the function will not be reflected in the original array outside the function.
  • If you need to make changes to an array inside a function, you should pass the array as a function argument.
  • If you only need to access the elements of an array inside a function, you should pass a pointer to the array as a function argument.

Further Reading:


What is Pointer to an array? Give one example.

Print The array element using Pointer to an array

Implications of Passing an Array and a Pointer to an Array as Function Arguments in C

Write a C program that uses a pointer to an array to find the sum of all elements.

Assingment of pointer to an array in c

Enroll Now:

C-Programming From Scratch to Advanced 2023-2024] "Start Supercharging Your Productivity!"

Contact Us:

  • For any inquiries, please email us at [[email protected]].
  • Follow us on insta  [ electro4u_offical_ ] for updates and tips.

 

Note: If you encounter any issues or specific errors when running this program, please let me know and I'll be happy to help debug them!

BY: Balmiki Mandal

Related Blogs

Post Comments.

Login to Post a Comment

No comments yet, Be the first to comment.