Code360 powered by Coding Ninjas X Naukri.com. Code360 powered by Coding Ninjas X Naukri.com
Table of contents
1.
Introduction
2.
Why does C treat array parameters as pointers?
2.1.
Output
3.
Frequently Asked Questions
3.1.
Are arrays considered pointers in C?
3.2.
Why are arrays treated as pointers in C?
3.3.
What is an array in the C programming language?
4.
Conclusion
Last Updated: Mar 27, 2024
Easy

Why does C treat array parameters as pointers?

Master Python: Predicting weather forecasts
Speaker
Ashwin Goyal
Product Manager @

Introduction

An array is a data structure used to store multiple values in a single variable instead of declaring separate variables for each value. A variable stores the memory address of another variable as its value, called a pointer. A pointer variable points to a data type (like int ) of the same type and is created with the * operator. In this article, we will discuss why C treats array parameters as pointers. 

You can also read about the dynamic arrays in c and C Static Function.

Why does C treat array parameters as pointers?

In the programming language of C, it has been observed that it treats array parameters as pointers. In C, the array name acts as a pointer and can be passed to function. When an array is passed as a parameter to a function, it doesn’t create a copy of the array. Rather the array parameter/ array name acts as a pointer that points to the base address or the first element, i.e., the element present at the 0th index of the array. This feature in C increases the coding efficiency and saves time and space. In most cases, the passing of an array to a function is done so that the function can access and modify the array elements in place without creating a copy of the whole array, which is inefficient and takes extra space and time.

void ninja(int arr[]) {
}

void ninja(int *arr) {
}

In the above code, both the function definitions are valid, and in both cases, the array parameters behave like a pointer.

Take, for example:

void printEven1(int arr[]){
  int i;
  printf("\n Even elements in the array are: \n");
  for(i=0;i<6;i++)
  printf(" %d",a[i]);
}
 
void printEven2(int *arr){
  int i;
  printf("\n Even elements in the array are: \n");
  for(i=0;i<6;i++)
  printf(" %d",*(arr+i));
}
 
void main(){
  int a[5] = {1,2,3,4,5,6};
  printEven1(arr);
  printEven2(arr);
}

Output

Even elements in the array are:
2 4 6
Even elements in the array are:
2 4 6

You can implement it by yourself on c online compiler.

Get the tech career you deserve, faster!
Connect with our expert counsellors to understand how to hack your way to success
User rating 4.7/5
1:1 doubt support
95% placement record
Akash Pal
Senior Software Engineer
326% Hike After Job Bootcamp
Himanshu Gusain
Programmer Analyst
32 LPA After Job Bootcamp
After Job
Bootcamp

Frequently Asked Questions

Are arrays considered pointers in C?

An array is a pointer, and you can store that pointer into any pointer variable of the correct type. For example, int A[10]; int* p = A; p[0] = 0; makes variable p point to the first member of array A.

Why are arrays treated as pointers in C?

In C, array parameters are treated as pointers mainly to increase the efficiency of code and also to save time.

What is an array in the C programming language?

An array is a data structure used to store multiple values in a single variable instead of declaring separate variables for each value. 

Conclusion

In this article, we have extensively discussed why C treats array parameters as pointers.  I am sure you must be excited to read similar blogs. Coding Ninjas has got you covered. Here are some similar blogs to redirect: What are arrays in C?Arrays and PointersIntroduction to PointersArray of pointers and Short int in C Programming. We hope that this blog has helped you enhance your knowledge, and if you wish to learn more, check out our Coding Ninjas Blog site and visit our Library. Here are some courses provided by Coding Ninjas: Basics of C++ with DSACompetitive Programming and MERN Stack Web Development

Recommended problems -

 

Do upvote our blog to help other ninjas grow.

Happy Learning!

Previous article
Difference between Static and Dynamic Memory Allocation in C
Next article
Near, Far and Huge Pointers
Live masterclass