Trước hết, hiểu về mảng con trỏ (arrays of pointers) trong C.
Mảng con trỏ: (trỏ đến chuỗi)
- Là mảng các phần tử là con trỏ trỏ đến địa chỉ cơ sở của chuỗi.
- Khai báo và khởi tạo như sau:
char *a[] = {"one", "two", "three"};
Ở đây, a[0] là con trỏ trỏ đến địa chỉ cơ sở của chuỗi "one".a[1] trỏ đến "two".a[2] trỏ đến "three".

Ưu điểm
- Khác với mảng 2 chiều ký tự, mảng con trỏ chuỗi không có kích thước bộ nhớ cố định cho lưu trữ.
- Các chuỗi chỉ chiếm bấy nhiêu byte cần thiết nên không lãng phí không gian.
Ví dụ 1
Chương trình C in mảng con trỏ chuỗi và địa chỉ:
#include#include void main(){ int i; char *a[5] = {"One","Two","Three","Four","Five"}; printf("The values in every string location are : \n"); for(i=0;i<5;i++){ printf("%s\n", a[i]); } printf("The address locations of every string values are : \n"); for(i=0;i<5;i++){ printf("%p\n", (void*)a[i]); } }
Kết quả
The values in every string location are: One Two Three Four Five The address locations of every string values are: 0x403000 0x403004 0x403008 0x40300e 0x403013
Ví dụ 2
Ví dụ khác về mảng con trỏ chuỗi:
#include#include void main(){ char string[10] = "TutorialPoint"; char *pointer = string; printf("The string is : "); while(*pointer != '\0'){ printf("%c", *pointer); pointer++; } }
Kết quả
The string is: TutorialPoint