C-style array
Megjelenés
Főnév
C-style array (tsz. C-style arrays)
- (informatika) A C-style array (vagy magyarul „C-stílusú tömb”) a C és C++ programozási nyelv egyik legegyszerűbb és legalapvetőbb adattípusa. Ez egy olyan adatszerkezet, amely azonos típusú elemeket tárol fix hosszúságú, egymás után elhelyezett memóriaterületen. A C++ modern szabványai (pl. C++11-től
std::arrayésstd::vector) ugyan kényelmesebb alternatívát nyújtanak, de a C-style array továbbra is fontos szerepet játszik alacsony szintű programozásban és interfészekben.
📌 Szintaxis
TombTipus nev[meret];
Például:
int tomb[5]; // 5 elemű egész számokat tartalmazó tömb
⚙️ Inicializálás
int tomb[3] = {1, 2, 3};
char szoveg[] = {'H', 'e', 'l', 'l', 'o', '\0'}; // karakterlánc
Ha kevesebb elemet adsz meg, a maradék 0-val lesz feltöltve:
int t[5] = {1}; // => {1, 0, 0, 0, 0}
🧮 Hozzáférés
Indexelés 0-tól indul:
tomb[0] = 42;
int x = tomb[2];
⚠️ Jellemző tulajdonságok
| Tulajdonság | Részletek |
|---|---|
| Fix méret | A méret fordítási időben ismert, nem változtatható. |
| Nem biztonságos indexelés | Nincs határellenőrzés (tomb[999] akár segfault). |
| Pointerként kezelhető | A tömb neve az első elemre mutató pointerként működik. |
| Nem másolható közvetlenül | tomb2 = tomb1; nem működik. |
| Memória | Stack-en helyezkedik el (alapértelmezés szerint). |
🧠 Tömb és pointer kapcsolata
int tomb[4] = {10, 20, 30, 40};
int* p = tomb; // p ugyanarra a címre mutat
int x = *(p + 2); // x == 30
A tomb neve egy int*, amely tomb[0] címére mutat.
🔄 Iterálás
for (int i = 0; i < 5; ++i)
std::cout << tomb[i] << std::endl;
🧩 Tömb mint paraméter
void kiir(const int tomb[], int meret) {
for (int i = 0; i < meret; ++i)
std::cout << tomb[i] << " ";
}
Valójában int tomb[] és int* tomb ugyanaz a típusként:
void kiir(const int* tomb, int meret);
🧨 Gyakori hibák
Méret elvesztése függvényhíváskor:
void f(int t[]) { sizeof(t); // => nem adja vissza az eredeti tömb méretét! }
Véletlen túlcímzés (
tomb[5]5 elemű tömbnél).
🧠 Méret meghatározása
int t[10];
std::size_t meret = sizeof(t) / sizeof(t[0]);
De ez CSAK azon a helyen működik, ahol a tömb valódi tömb, nem pointer.
✅ Alternatívák modern C++-ban
| Alternatíva | Leírás |
|---|---|
std::array<T, N> |
Fix méret, típusbiztos, STL-kompatibilis |
std::vector<T> |
Dinamikus méret, automatikus memória-kezelés |
std::span<T> |
Nem birtokló, biztonságos hozzáférés C++20-tól |
🧪 Példa
#include <iostream>
int main() {
int szamok[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; ++i)
std::cout << szamok[i] << ' ';
return 0;
}
🧵 Összefoglalás
- A C-style array egyszerű, de veszélyes, mivel nincs határellenőrzés.
- Jó választás lehet alacsony szintű vagy performance-kritikus kódhoz.
- Modern C++-ban inkább
std::array,std::vectorvagystd::spanhasználata ajánlott. - Használatakor mindig tartsd észben: a méretet nem viszi magával!
- C-style array - Szótár.net (en-hu)
- C-style array - Sztaki (en-hu)
- C-style array - Merriam–Webster
- C-style array - Cambridge
- C-style array - WordNet
- C-style array - Яндекс (en-ru)
- C-style array - Google (en-hu)
- C-style array - Wikidata
- C-style array - Wikipédia (angol)