Lets look at basics of arrays in C programming language. We’ve already covered a lot of stuffs about arrays in Introduction To Arrays: C Programming Language. In this video tutorial we’ll look at some specific things about arrays which we use often.
Related Read:
For Loop In C Programming Language
Sizeof Operator in C Programming Language
Page Contents
Syntax:
Data_type variable_name[array_size];
Ex: int a[5];
Here array variable is a, it can hold upto 5 integer values.
Index of array starts from zero, and it ends at N-1. N being the size of the array.
For Ex:
int a[N];
Here the first element of array a is at a[0] and the last element is at a[N-1].
An array is a collection of data items, of same data type, accessed using a common name.
Printing all the elements of an array
#include<stdio.h> int main() { int a[5] = {1, 2, 3, 4, 5}, i; printf("Array elements are: \n"); for(i = 0; i < 5; i++) printf("%d\n", a[i]); return 0; }
Output:
Array elements are:
1
2
3
4
5
This prints all the elements of an array. In this program we’re declaring and initializing array variable simultaneously.
Empty curly braces for Array Variable
#include<stdio.h> int main() { int a[5] = {}, i; printf("Array elements are: \n"); for(i = 0; i < 5; i++) printf("%d\n", a[i]); return 0; }
Output:
Array elements are:
0
0
0
0
0
Compiler will insert zero in all the empty spots.
Un-initialized Array Variable
#include<stdio.h> int main() { int a[5], i; printf("Array elements are: \n"); for(i = 0; i < 5; i++) printf("%d\n", a[i]); return 0; }
Output:
Array elements are:
6356864
4200750
4200656
46
8
If array variable is left un-initialized it’ll have garbage values inside it.
Array Variable Not fully initialized Manually
#include<stdio.h> int main() { int a[5] = {3, 2}, i; printf("Array elements are: \n"); for(i = 0; i < 5; i++) printf("%d\n", a[i]); return 0; }
Output:
Array elements are:
3
2
0
0
0
Whenever we assign less values than the array size, the remaining elements will get assigned to 0.
Expression As Array Size
#include<stdio.h> int main() { int a[2+3] = {3, 2, 1, 0, 5}, i; printf("Array elements are: \n"); for(i = 0; i < 5; i++) printf("%d\n", a[i]); return 0; }
Output:
Array elements are:
3
2
1
0
5
Any valid expression which ultimately resolves to a positive integer is valid inside square brackets.
Negative Integer Number As Array Size
#include<stdio.h> int main() { int a[-5] = {3, 2, 1, 0, 5}, i; printf("Array elements are: \n"); for(i = 0; i < 5; i++) printf("%d\n", a[i]); return 0; }
Output:
error: size of array ‘a’ is negative
warning: excess elements in array initializer
You can only have positive integer as size of an array and nothing else.
Trying To Assign More Values Than The Array Size
#include<stdio.h> int main() { int a[5] = {1, 2, 3, 4, 5, 6, 7}, i; printf("Array elements are: \n"); for(i = 0; i < 5; i++) printf("%d\n", a[i]); return 0; }
Output:
warning: excess elements in array initializer
You can’t assign more values than the array size.
Overwrite values present at an index: Array
#include<stdio.h> int main() { int a[5] = {1, 2, 3, 4, 5}, i; a[3] = 100; printf("Array elements are: \n"); for(i = 0; i < 5; i++) printf("%d\n", a[i]); return 0; }
Output:
Array elements are:
1
2
3
100
5
Here the previous value present at index 3(which can be access using a[3]), is overwritten by value 100.
Garbage Values In Empty Spots: Array
#include<stdio.h> int main() { int a[5], i; a[3] = 100; printf("Array elements are: \n"); for(i = 0; i < 5; i++) printf("%d\n", a[i]); return 0; }
Output:
Array elements are:
6356864
4200766
4200672
100
8
As you can see, the element at index 3 has 100, and all other elements value is just garbage values.
Array Size In Memory
#include<stdio.h> int main() { int a[5]; float b[5]; char c[5]; double d[5]; printf("Int Array: %d\n", 5 * sizeof(int)); printf("Float Array: %d\n", 5 * sizeof(float)); printf("Char Array: %d\n", 5 * sizeof(char)); printf("Double Array: %d\n", 5 * sizeof(double)); return 0; }
Output:
Int Array: 20
Float Array: 20
Char Array: 5
Double Array: 40
Each cell in array occupies memory space depending upon its data type. Int and float occupies 4 bytes. Char occupies 1 byte. Double occupies 8 bytes. Also remember, size of data type is machine dependent.
Initializing and Accessing Array Elements
#include<stdio.h> int main() { int a[5], i; printf("Enter 5 integer numbers\n"); for(i = 0; i < 5; i++) scanf("%d", &a[i]); printf("Array elements are: \n"); for(i = 0; i < 5; i++) printf("%d\n", a[i]); return 0; }
Output:
Enter 5 integer numbers
1
2
3
4
5
Array elements are:
1
2
3
4
5
For list of all c programming interviews / viva question and answers visit: C Programming Interview / Viva Q&A List
For full C programming language free video tutorial list visit:C Programming: Beginner To Advance To Expert