Initialize One dimensional 1D array in C Language Skill UP
  • Twitter
  • Facebook
  • Snapchat
  • Instagram

How to Initialize an Array in C Programming

Author

Written by Sankalan Data Tech Team — We're a team of experienced software developers and educators with over a decade of experience in C programming and embedded systems. We've taught thousands of students and professionals through our tutorials and training programs.

📑 On this page:
  • Introduction to Array Initialization
  • What is an Array?
  • Methods of Array Initialization
  • 1. Initialization with Declaration
  • 2. Initialization without Size
  • 3. Using Loops
  • 4. By Specifying Size
  • 5. Getting Input from User
  • 6. Designated Initializers
  • Frequently Asked Questions
📚 In this tutorial, you will learn:
  • What is array initialization in C programming
  • Different methods to initialize a 1D array
  • Compile-time vs runtime initialization
  • Using loops and user input for array initialization
  • Designated initializers in C99 standard

Introduction to 1D Array Initialization in C

"Hey there, fellow programmer! 👋" Let's talk about something that I've seen trip up even experienced developers: array initialization in C. I still remember my first C program—I declared an array, didn't initialize it, and spent hours debugging a program that was printing random garbage values. It was frustrating, but it taught me a lesson I'll never forget: always initialize your arrays!

In this tutorial, I'll walk you through everything you need to know about initializing one-dimensional arrays in C. Whether you're just starting out or you've been coding for a while, I'll share some practical tips and tricks I've learned over the years that you won't find in textbooks.

What is an Array? (And Why I Love Them)

Think of an array like a parking lot with numbered spaces. Each space can hold one car (or in our case, one value), and you can access any car quickly by knowing its space number.

In C, an array is a collection of elements of the same data type stored in contiguous memory locations. When I first learned about arrays, I immediately thought, "This is going to save me from creating 100 separate variables!" And it did. Arrays allow efficient storage and access of multiple values using a single variable name.

What is Array Initialization? (The Lesson I Learned)

Array initialization is simply giving your array elements initial values. If you don't initialize an array, it's like leaving those parking spaces empty—you never know what's going to be there when you try to access them. In C, uninitialized arrays contain garbage values (whatever random data happens to be in memory at that time).

True story: A few years ago, I was mentoring a junior developer who was getting weird output from his program. After an hour of debugging, we realized he had declared an array but never initialized it. The program was reading whatever random data was in memory and treating it as meaningful input. Always initialize your arrays! Trust me, it will save you many headaches.

How to Initialize an Array in C

In C programming, arrays are initialized using curly braces { } containing comma-separated values. Here's the basic syntax:

type   array_name[array_size];

The array_size must be a constant value greater than zero. I usually define my array sizes as constants at the top of my file using #define so I can easily change them later if needed. For example:

#define MAX_STUDENTS 100

This way, if I need to change the array size, I only need to update it in one place instead of hunting through my entire code.

Two Ways to Initialize (A Simple Breakdown)

Over the years, I've found it helpful to think of array initialization in two categories:

  • Compile-Time Initialization (Static):

    This is when you provide values at the time of declaration. It's like setting up your parking lot with cars already parked. This is my go-to method when I know exactly what data I need.

  • Runtime Initialization (Dynamic):

    This is when you assign values during program execution. It's like having a valet service that parks cars as they arrive. I use this method when I need to take input from users or when values depend on calculations.


1. Array Initialization with Declaration

This is probably the most common way I initialize arrays in my day-to-day coding. When I'm writing quick prototype programs, I often use this method because it's clean and straightforward.

Syntax (The Basic Pattern):

data_type array_name[size] = {value1, value2, ... valueN};

Example:

// C Program to demonstrate array initialization
#include <stdio.h>

int main() {
    // Array initialization using initializer list
    int no[5] = { 110, 200, 130, 400, 50 };
    
    // Quick tip: I always use descriptive variable names
    // "no" might be confusing - I'd use "numbers" or "scores"
    printf("\n Value of array at third place=%d", no[2]);
    return 0;
}

💡 My personal tip: When I'm initializing arrays, I like to add a comment explaining what the values represent. Trust me, when you revisit your code six months later, you'll thank yourself!


2. Array Initialization without Specifying Size

This is my favorite trick! It's like letting the compiler do the math for you. I use this method frequently when I'm working with fixed data sets that I know won't change.

Syntax:

data_type array_name[] = {v1, v2, v3, v4, v5};

The compiler automatically calculates the size. So if I add a sixth element, the array size automatically becomes 6. Pro tip: If you need to know the size later, you can calculate it using sizeof(array) / sizeof(array[0]).

Example:

// Array initialization with Declaration without size
#include <stdio.h>

int main() {
    // The compiler will automatically set size to 5
    int emp_salary[] = {8000, 12000, 13000, 4000, 5000};
    
    // A common mistake: assuming the size is always what you expect
    // To be safe, you can calculate the size using sizeof
    int array_size = sizeof(emp_salary) / sizeof(emp_salary[0]);
    
    printf("\nNumber of elements: %d", array_size);
    printf("\nThird salary = %d", emp_salary[2]);
    return 0;
}
Output:
Number of elements: 5
Third salary = 13000

⚠️ A mistake I've made before: When you use this method, remember that if you leave out the size, the compiler will allocate exactly as many elements as you initialize. If you later try to access an index beyond that, you'll get undefined behavior. I've definitely learned this the hard way!


3. Array Initialization Using Loops

This is where arrays start to feel really powerful. Using a loop to initialize an array is like having a robot fill up your parking lot for you. I use this method all the time when I'm generating data on the fly.

#include <stdio.h>

int main() {
    int salary[5];
    
    // Real-world scenario: Calculating annual increments
    // Each year, salary increases by 1300
    for(int i = 0; i < 5; i++) {
        salary[i] = 1300 * i;
    }
    
    // Let's print to verify
    for(int i = 0; i < 5; i++) {
        printf("Year %d salary: %d\n", i+1, salary[i]);
    }
    
    return 0;
}

💡 My personal tip: This method is perfect when you need to calculate values programmatically. For example, in one of my projects, I used a loop to initialize an array with Fibonacci numbers. It's much cleaner than hardcoding each value!

After execution, the array salary will contain: {0, 1300, 2600, 3900, 5200}


4. Array Initialization by Specifying Size

Here's something that often surprises beginners: if you initialize fewer values than the declared size, C automatically fills the rest with zeros.

// Two different approaches that do the same thing
int salary[4] = {100, 200, 300, 400};  // All values provided
int salary2[4] = {100, 200, 300};      // Fourth element becomes 0

printf("Salary2[3] = %d", salary2[3]);  // Output: 0

⚠️ A gotcha I've seen many times: Beginners often assume that if they don't provide enough values, the array will automatically grow. That's not true! The array size is fixed at declaration time. If you declare int arr[4], you can only store 4 elements—no more, no less.

My personal tip: I often use this zero-initialization feature intentionally. If I want an array with all zeros, I can simply write int arr[10] = {0}; and all 10 elements will be zero. It's cleaner than using a loop.


5. Getting Input from the User

This is where the magic of interactive programming happens. When I'm building real applications, this is probably the most common way I work with arrays—letting users provide the data.

#include <stdio.h>

int main() {
    int salary[5];
    
    printf("\nEnter five different salaries:\n");
    
    // My personal pattern: Always validate user input
    for(int i = 0; i < 5; i++) {
        printf("Salary %d: ", i+1);
        scanf("%d", &salary[i]);
    }

    printf("\nHere are the salaries you entered:\n");
    for(int i = 0; i < 5; i++) {
        printf("%d\n", salary[i]);
    }

    return 0;
}

💡 Pro tip from my experience: Always, always validate user input! I've worked on projects where invalid user input caused crashes or security vulnerabilities. Consider adding checks like:

  • Checking if scanf() returns the expected number of values
  • Validating that numbers are within reasonable ranges
  • Clearing the input buffer if the user enters invalid data

6. Using Designated Initializers (C99 Standard)

This is the fancy, modern way of initializing arrays. I love this method because it makes the code self-documenting—you can see exactly which value goes to which index.

// Example 1: Setting specific indices
int salary[5] = { [4] = 5000, [0] = 1200, 2560, 3200, 4500 };

// Example 2: Clear and explicit
int salary2[4] = { [0] = 1500, [1] = 2000, [2] = 5400, [3] = 6500 };

🌟 Why I love this method: In a recent project, I needed to initialize an array of configuration settings where only a few indices had non-zero values. Instead of writing a 100-element array, I could just use designated initializers for the few values I needed. The rest were automatically set to zero.

⚠️ Note: Designated initializers are supported in C99 and later versions. If you're using an older compiler, this might not work. In practice, I've found that most modern compilers (like GCC and Clang) support it.


What I Wish I Knew When I Started

Looking back at my journey with C programming, here are a few lessons I learned the hard way:

  • Always initialize arrays: I can't stress this enough. Uninitialized arrays have given me more debugging headaches than almost any other C feature.
  • Know your array bounds: C doesn't check array bounds for you. Accessing arr[10] when you only declared int arr[5] will compile but lead to undefined behavior.
  • Use constants for sizes: Instead of using magic numbers like int arr[10], use #define MAX 10. This makes your code more maintainable.
  • Check your return values: Always check what scanf() returns to ensure the user entered valid data.

Frequently Asked Questions About Array Initialization

1. What happens if I don't initialize an array in C?

If an array is not initialized, its elements contain garbage values (undefined values). I've seen this cause programs to behave in really strange ways—one time, an uninitialized array in an embedded system caused my entire device to crash!

2. Can I initialize an array after declaration?

Yes, but only by assigning to individual elements using their index, or by using a loop. You cannot use an initializer list after declaration. For example: arr[0] = 10; arr[1] = 20;

3. What are designated initializers in C?

Designated initializers (introduced in C99) allow you to initialize specific array elements by specifying their index using the [index] = value syntax. I started using them extensively after I had to maintain a 200+ element configuration array—it was a lifesaver!

4. How do I initialize an array with all zeros?

The simplest way is int arr[10] = {0};. This sets all elements to 0. You can also use int arr[10] = {} in some compilers.

5. Can I initialize a character array with a string?

Yes! You can initialize a character array with a string literal: char str[] = "Hello";. The compiler automatically adds a null terminator '\0' at the end. This is one of the first things I learned about strings in C, and it's still one of the most useful!

💡 Final Tip: Always initialize your arrays to avoid garbage values and ensure predictable program behavior. This simple habit will save you hours of debugging!

📖 Related Tutorials

  • Declaring 1D Arrays in C
  • Accessing Array Elements in C
  • Read and Display 1D Arrays
  • 1D Array in C

Previous Topic: -->> Declare 1D Array in C   ||   Next topic: -->> Access Element 1D Array


📚 Explore More Topics

🗄️ SQL Interview Questions & Answers

SQL SELECT Statement FAQ SQL Restricting & Sorting Data FAQ SQL Multiple Tables (JOINs) FAQ SQL DML Statements (Managing Tables) FAQ SQL DDL (Tables & Relationships) FAQ SQL Views FAQ SQL Indexing Best Practices FAQ

🐍 Python Interview Questions & Answers

Python Interview Questions Python If-Else FAQ Python Loops FAQ Python Functions Interview Q Python OOP Interview Questions

☕ Java Interview Questions & Answers

Java Introduction Interview Q Java Development Environment FAQ Java Data Types FAQ Java Arrays FAQ Java Strings FAQ Java Advanced OOP Concepts FAQ Java Synchronization FAQ Java Threads & Concurrency FAQ Java Inner & Anonymous Classes FAQ Java Memory Management FAQ

C Language

  • Home
  • Why C Language
  • History of C Language
  • Applications of C Language
  • Introduction To C
    • What is Program?
    • Structure of C Program
    • Working Of C Program
    • CHARACTER SET
    • VARIABLES AND IDENTIFIERS
    • BUILT-IN DATA TYPES
    • OPERATORS AND EXPRESSIONS
    • CONSTANTS AND LITERALS
    • SIMPLE ASSIGNMENT STATEMENT
    • BASIC INPUT/OUTPUT STATEMENT
    • SIMPLE 'C' PROGRAMS
    • Assignments
  • Operators in C Programming
    • Arithmetic Operators
    • Assignment Operators
    • Increment and Decrement Operators
    • Relational Operators
    • Logical Operators
    • Bitwise Operators
    • Other Operators
    • Assignments
  • Conditional Statements
    • DECISION MAKING WITHIN A PROGRAM
    • CONDITIONS
    • IF STATEMENT
    • IF-ELSE STATEMENT
    • IF-ELSE LADDER
    • NESTED IF-ELSE
    • SWITCH CASE
    • Assignments
  • Loops Statements
    • Introduction to Loops
    • GO TO Statement
    • Do while Loop
    • While Loop
    • Nested While Loop
    • Difference Between While and Do while
    • Difference Between Goto and loop
    • while loop assignments
    • C FOR Loop
    • C For loop examples
    • Nested for loop
    • Nested for loop examples
    • Infinite while Loops
    • Infinite for Loops
    • Continue in Loops
    • break in Loops
    • difference while do..while & for
    • Assignments
  • Arrays
    • One Dimensional Array
    • Declaring 1D Arrays
    • Initilization of 1D arrays
    • Accessing element of one 1D Array
    • Read and Display 1D Arrays
    • Two Dimensional Arrays
    • Declare 2D Arrays
    • Read and Display 2D Arrays
    • Assignments/Examples
  • Functions
    • Introduction
    • Need For User-Defined Function
    • Multiple Function Program
    • Modular Programming
    • Elements Of User Defined Function
    • Function Definition
    • Function Declaration
    • Types of functions
    • Nesting of Function
    • Recursion
    • Passing Array To Functions
    • Scope,Visibility and Lifetime of Variables
    • Assignments
  • Structure
    • Introduction
    • Array vs Structure
    • Defining Structure
    • Declaring Structure Variables
    • Type Defined Structure
    • Accessing Structure Members
    • Structure Initilization
    • Copying & Comparing Structure Variables
    • Array of Structure
    • Arrays Within Structure
    • Structures Within Structures
    • Structures and Functions
    • Structure Examples/Assignments
  • Union
    • Define Union
    • Create and use Union
    • Difference Between Structure and Union
    • Union Examples
    • Union FAQ
  • Pointers
    • What Are Pointers In C?
    • How Do We Use Pointers In C?
    • Declaration Of A Pointer
    • The Initialization Of A Pointer
    • Syntax Of Pointer Initialization
    • Use Of Pointers In C
    • The Pointer To An Array
    • The Pointer To A Function
    • The Pointer To A Structure
    • Types Of Pointers
    • The Null Pointer
    • The Void Pointer
    • The Wild Pointer
    • The Near Pointer
    • The Huge Pointer
    • The far Pointer
    • dangling pointer
    • Accessing Pointers- Indirectly And Directly
    • Pros Of Using Pointers In C
    • Cons Of Pointers In C
    • Applications Of Pointers In C
    • The & Address Of Operator In C
    • How To Read The Complex Pointers In C?
    • Practice Problems On Pointers
  • File Processing
    • File Handling In C
    • Types Of Files In C
    • Operations Done In File Handling
    • File Examples
    • Binary Files
    • count words,lines in a file
    • Copy files
    • Update File
    • count vowels in a file
  • Preprocessor
    • Macro substitution division
    • File Inclusion
    • Conditional Compilation
    • Other directives
    • Examples
  • Dynamic Memory Allocation
    • malloc
    • calloc
    • free
    • realloc
    • Examples
  • Storage Classes
  • Graphics
  • Frequently Asked Interview Questions (FAQ)
    • Introduction To C FAQ
    • Operators FAQ
    • Conditional Statements FAQ
    • Loops FAQ
    • Arrays FAQ
    • Function FAQ
    • Structure FAQ
    • Pointers FAQ
    • Files FAQ
    • Storage classes FAQ
    • Dynamic Memory FAQ
  • Programs/Assignments
    • Introduction To C
    • Operators
    • Conditional Statements
    • Loops
    • Arrays
    • Function
    • Structure
    • Pointers
    • Files
    • Storage classes
    • Dynamic Memory
  • Case Studies
  • Multiple Choice Questions
    • Introduction To C MCQ
    • Operators MCQ
    • Conditional Statements MCQ
    • Loops MCQ
    • Arrays MCQ
    • Function MCQ
    • Structure MCQ
    • Pointers MCQ
    • Files MCQ
    • Storage classes MCQ
    • Dynamic Memory MCQ
    • More MCQ

Get in touch

  • tech2dsm@gmail.com

© Sankalan Data Tech. All rights reserved.