Last Updated : 12 Apr, 2023
In C, array parameters are treated as pointers mainly to,
It is inefficient to copy the array data in terms of both memory and time; and most of the time, when we pass an array our intention is to just refer to the array we are interested in, not to create a copy of the array.
The following two definitions of fun() look different, but to the compiler, they mean exactly the same thing.
void fun(int arr[]) { // body } // This is valid void fun(int *arr) { // body } // This is valid too
It's preferable to use whichever syntax is more accurate for readability.
Note: If the pointer coming in really is the base address of a whole array, then we should use [ ].
Example: In this example, the array parameters are being used as pointers.
C
// C Program to demonstrate that C treats array parameters
// as pointers
#include <stdio.h>
void findSum1(int arr[])
{
int sum = 0;
for (int i = 0; i < 5; i++)
sum = sum + arr[i];
printf("The sum of the array is: %d\n", sum);
}
void findSum2(int* arr)
{
int sum = 0;
for (int i = 0; i < 5; i++)
sum = sum + arr[i];
printf("\nThe sum of the array is: %d \n", sum);
}
// Driver code
int main()
{
int arr[5] = { 1, 2, 3, 4, 5 };
findSum1(arr);
findSum2(arr);
return 0;
}
C++
// C++ Program to demonstrate that C treats array parameters
// as pointers
#include <iostream>
using namespace std;
void findSum1(int arr[])
{
int sum = 0;
for (int i = 0; i < 5; i++)
sum = sum + arr[i];
cout <<"The sum of the array is: " << sum;
}
void findSum2(int* arr)
{
int sum = 0;
for (int i = 0; i < 5; i++)
sum = sum + arr[i];
cout <<"\nThe sum of the array is: "<< sum;
}
// Driver code
int main()
{
int arr[5] = { 1, 2, 3, 4, 5 };
findSum1(arr);
findSum2(arr);
return 0;
}
// this code is contributed by shivanisinghss2110
The sum of the array is: 15 The sum of the array is: 15
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4