อันดับแรก ให้เราเข้าใจว่าอาร์เรย์ของพอยน์เตอร์ในภาษาการเขียนโปรแกรม C คืออะไร
อาร์เรย์ของพอยน์เตอร์:(เป็นสตริง)
-
เป็นอาร์เรย์ที่มีองค์ประกอบเป็น ptrs ในการเพิ่มฐานของสตริง
-
มีการประกาศและเริ่มต้นดังนี้ -
char *a[ ] = {"one", "two", "three"};
ที่นี่ a[0] คือตัวชี้ไปยังการเพิ่มฐานของสตริง "หนึ่ง"
a[1] เป็นตัวชี้ไปยังการเพิ่มฐานของสตริง "สอง"
a[2] เป็นตัวชี้ไปยังการเพิ่มฐานของสตริง "สาม"
ข้อดี
ข้อดีของอาร์เรย์ของพอยน์เตอร์อธิบายไว้ด้านล่าง -
-
ยกเลิกการเชื่อมโยงอาร์เรย์สองมิติของอักขระ ในอาร์เรย์ของสตริง และในอาร์เรย์ของพอยน์เตอร์กับสตริง ไม่มีขนาดหน่วยความจำคงที่สำหรับการจัดเก็บ
-
สตริงใช้ไบต์ได้มากเท่าที่ต้องการเท่านั้น จึงไม่เปลืองเนื้อที่
ตัวอย่าง
โปรแกรม C ที่แสดงแนวคิดของการพิมพ์อาร์เรย์ของพอยน์เตอร์ไปยังสตริงและที่อยู่แสดงไว้ด้านล่าง -
#include<stdio.h> #include<string.h> void main(){ //Declaring string and pointers, for loop variable// int i; char *a[5]={"One","Two","Three","Four","Five"}; //Printing values within each string location using for loop// printf("The values in every string location are : \n"); for(i=0;i<5;i++){ printf("%s\n",a[i]); } //Printing addresses within each string location using for loop// printf("The address locations of every string values are : \n"); for(i=0;i<5;i++){ printf("%d\n",a[i]); } }
ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
The values in every string location are: One Two Three Four Five The address locations of every string values are: 4210688 4210692 4210696 4210702 4210707
ตัวอย่างที่ 2
ลองพิจารณาอีกตัวอย่างหนึ่ง
ด้านล่างนี้เป็นโปรแกรม C ที่แสดงแนวคิดของอาร์เรย์ของพอยน์เตอร์ไปยังสตริง -
#include<stdio.h> #include<string.h> void main(){ //Declaring string and pointers// char string[10]="TutorialPoint"; char *pointer = string; //Printing the string using pointer// printf("The string is : "); while(*pointer!='\0'){ printf("%s",*pointer); pointer++; } }
ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
The string is: TutorialPoint