Ang Burter aritmetika ay isang karaniwang katangian sa C at C++, na nagpapahintulot ng direktang manipulasyon ng mga memory address. Bagaman ang malakas, hindi tamang paggamit ay maaaring humantong sa mga bug, seguridad vaulnerability, at hindi pa nai-refluensiyal na pag-uugali. Ang artikulong ito ay naghaharap ng mga reality-world na halimbawa na naglalarawan kapuwa sa mga aplikasyon at mga patibong ng pointer aritmetika.

Halimbawa 1: Mga Array na Nag - aalinlangan

Ang aritmetikang pangturo ay kadalasang ginagamit upang mabisang i - tanser sa pamamagitan ng mga array. Halimbawa, upang bilangin ang mga elemento ng isang hanay na integer:

[[Correct)[

int sum = 0;

int *pr = hanay;

para sa (int i = 0; i < sukat; i++) ⁇

sum += *(ptr + i);

Tamang naaccess ng pamamaraang ito ang mga elementong array gamit ang pointer aritmetika.

Pitfall 1: Pointer Arithmetic Sa Kabila ng mga Pampalaki ng Array

Ang mga nag - uudyok ng damdamin na higit pa sa naihandang memorya ay maaaring maging sanhi ng di - maipaliwanag na paggawi.

int *pr = hanay;

para sa (int i = 0; i <= laki; i++) ⁇

printf("%dn", *(ptr + i));

Ang pagkuha *(ptr + sukat) ay nakahihigit sa mga hangganan ng hanay, na humahantong sa hindi mahulaang mga resulta.

Halimbawa 2: Pag - uudyok sa mga Manipulasyon

Ang aritmetikang pangturo ay madalas na ginagamit sa pagpoproseso ng strando. Halimbawa, ang pagkopya ng isang strando:

[[Correct appoach:]]

char *src = "Hello";

char dest[6];

char *p = src;

char *q = dest;

samantalang (*p) ⁇

*q+ = *p++;

*q = '';

Pitfall 2: Mga sira sa Pagpe - Slog na Pagkopya

Halimbawa, ang hindi paglalaan ng lugar para sa null determinator o pagkopya sa labas ng neutral na mga dahilan ay umaapaw.

char dest[5];

char *p = "World";

para sa (int i = 0; i <= 5; i++) ⁇

dest[i] = p[i];

Ito ay nag-ebolb ng anim na karakter sa isang limang-character na neutral, na nagiging sanhi ng pag-apaw.

Pagsasaayos

Ang Pointer aritmetika ay nagbibigay ng kakayahang umangkop sa C at C++, ngunit nangangailangan ng maingat na pangangasiwa upang maiwasan ang mga pagkakamali.Ang pag-unawa sa karaniwang mga patibong ay nakakatulong sa paghadlang ng mga isyu ng bugs at seguridad sa paggawa ng software.