Mảng con trỏ trỏ đến chuỗi (Array of Pointers to Strings)
Mảng các con trỏ, mỗi phần tử trỏ đến địa chỉ bắt đầu của một chuỗi.
char *a[3] = {"one", "two", "three"};
// a[0] trỏ đến "one", a[1] trỏ "two", a[2] trỏ "three"
Ưu điểm so với mảng 2D ký tự
- Không kích thước cố định cho mỗi chuỗi → tiết kiệm bộ nhớ.
- Chuỗi chỉ chiếm bytes cần thiết, không lãng phí.
Ví dụ 1: Khai báo tĩnh
#include <stdio.h>
int main() {
char *a[5] = {"one", "two", "three", "four", "five"};
for (int i = 0; i < 5; i++)
printf("%s ", a[i]);
return 0;
}
Kết quả
one two three four five
Ví dụ 2: Mảng con trỏ tên sinh viên
#include <stdio.h>
#include <string.h>
int main() {
char *students[] = {"bhanu", "ramu", "hari", "pinky"};
for (int i = 0; i < 4; i++)
printf("%s\n", students[i]);
return 0;
}
Kết quả
bhanu ramu hari pinky