นี่คือโปรแกรม C++ สำหรับหาผลรวมขององค์ประกอบอาร์เรย์โดยใช้ pointer arithmetic
อัลกอริธึม
- เริ่มต้นค่าอาร์เรย์จากอินพุตผู้ใช้
- กำหนด
s = 0 - ลูป i = 0 ถึง n-1:
s = s + *(ptr + i) - พิมพ์ผลรวมในตัวแปร
s
โค้ดตัวอย่าง
#include <iostream>
using namespace std;
int main() {
int a[7], i, s = 0;
int *ptr;
cout << "Enter the Numbers: ";
for (i = 0; i < 7; i++) {
cin >> a[i];
}
ptr = a; // ptr ชี้ไปที่ a[0]
for (i = 0; i < 7; i++) {
s = s + *(ptr + i); // *(ptr + i) เทียบเท่า ptr[i] หรือ a[i]
}
cout << "\nSum of Elements of Array: " << s;
return 0;
}
ผลลัพธ์
Enter the Numbers: 1 2 3 4 5 6 7 Sum of Elements of Array: 28
คำอธิบาย Pointer Arithmetic:
ptrชี้ไปที่a[0]ptr + iชี้ไปที่a[i](เลื่อนi * sizeof(int)ไบต์)*(ptr + i)dereference เพื่อได้ค่าa[i]- เทียบเท่ากับ
ptr[i]หรือa[i]
วิธีทันสมัย (แนะนำ): ใช้ std::accumulate (ดูบทความ 1004082795) หรือ range-based for loop: for (int x : a) sum += x; อ่านง่ายกว่าและปลอดภัยกว่า