1. Introduction
The C language is still widely used today in the fields of system programming and embedded programming. In this language, strings and arrays are key elements for managing data. When learning C, understanding the unique specification where strings are treated as “arrays of characters” is unavoidable.
This article takes a deep dive into the fundamental concepts of strings and arrays in C, aiming to resolve common questions beginners and intermediate programmers have about “the differences and relationships between strings and arrays.”
Through actual program examples, we will also cover how to declare arrays and strings, the basic functions for string manipulation, and important points about memory management. This will help you work with strings in C more safely and efficiently.
2. Basics of Arrays
Understanding arrays in C is the foundation of string manipulation. In this section, we will explain the concept and usage of arrays.
What is an Array?
An array is a structure that stores data of the same type in contiguous memory locations. For example, declaring an int
array allows you to handle multiple integers at once. In C, you declare an array as follows:
int numbers[5]; // An array to store 5 integers
This code declares an integer array named numbers
and allocates memory to store 5 integers. You access each element using an index.
Declaring and Initializing Arrays
You can initialize an array at the same time you declare it. Initialization means setting initial values during declaration.
int numbers[5] = {1, 2, 3, 4, 5}; // Declaration and initialization of an array
Here, the numbers
array stores integers from 1 to 5 in order. If you omit initialization, the array will contain undefined values (garbage data from memory).
Memory Layout and Access of Arrays
In C, arrays are stored in contiguous memory. For example, declaring int numbers[5]
allocates consecutive memory locations for numbers[0]
through numbers[4]
.
You access elements using indices, starting at 0 and going up to size – 1.
printf("%d", numbers[0]); // Print the first element of the array
By using arrays, you can manage multiple data items of the same type under one variable and operate on them efficiently.
3. Basics of Strings
In C, strings are not just sequences of characters—they are treated as special arrays. This section explains the components and manipulation of strings in C.
What is a String?
In C, a string is represented as a character array with a terminating null character ('\0'
) at the end. This null character marks the end of the string and plays a critical role in string operations.
For example, you can define a string like this:
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
Here, the greeting
array stores the 5 characters “Hello,” followed by a null character. In C, strings are identified by the presence of '\0'
at the end.
Declaring and Initializing Strings
You can initialize strings directly as character arrays. Commonly, you use string literals for declaration and initialization:
char greeting[] = "Hello";
With this form, the compiler automatically appends the null character, making the size of the greeting
array 6 (5 characters + null). If you ignore the null character, it can cause incorrect results.
String Literals vs. Character Arrays
In C, string literals and character arrays are similar but different. A string literal is declared as a const char*
, making it immutable.
const char *greeting = "Hello"; // String literal
A character array, on the other hand, can be modified like a normal array. For example, char greeting[] = "Hello";
allows changes to its elements.
greeting[0] = 'h'; // Change "Hello" to "hello"
Understanding the difference helps in memory management and avoiding errors.