Programovací jazyk C poskytuje různé způsoby vytváření polí různých typů dat. Někdy je však nutné vytvořit pole, aniž byste explicitně uvedli jeho velikost. To může být užitečné v případech, kdy je velikost pole určena během provádění programu nebo kdy se velikost může měnit v průběhu programu.
Jedním ze způsobů, jak vytvořit pole bez uvedení jeho velikosti v jazyce C, je použití ukazatele na pole. Ukazatel pole je proměnná, která ukládá adresu prvního prvku pole. Tento způsob umožňuje vytvořit pole libovolné délky nastavením během provádění programu. Například:
int *arr;
printf ("Zadejte velikost pole: ");
arr = (int*)malloc(size * sizeof(int));
V tomto příkladu vytvoříme ukazatel na pole arr typu int a poté použijeme funkci malloc k přidělení paměti pro pole. Funkce malloc přijímá argument velikost paměti v bajtech a vrací ukazatel na začátek vyhrazeného paměťového bloku. Pro přidělení paměti pod pole vynásobíme velikost velikostí datového typu int. Poté můžeme použít proměnnou arr jako normální pole.
Vytvoření pole bez velikosti C
Chcete-li vytvořit takové pole, musíte nejprve vyhlásit ukazatel na požadovaný typ dat. Chcete-li například vytvořit pole bez velikosti typu int, můžete použít následující kód:
int* array;
Poté lze vybrat paměť pro pole pomocí funkce malloc () a zadat požadovanou velikost v bajtech. Chcete-li například zvýraznit paměť pro 5 prvků typu int, můžete použít následující kód:
array = (int*) malloc(5 * sizeof(int));
Pokud je paměť úspěšně zvýrazněna, funkce malloc() vrátí ukazatel na začátek oblasti vyhrazené paměti. Nyní můžete tento ukazatel použít k práci s polem bez velikosti.
Pro přístup k prvkům pole můžete použít indexy nebo ukazatele. Chcete-li například zapsat hodnotu 10 do prvního prvku pole, můžete použít následující kód:
*array = 10;
A chcete-li získat hodnotu prvního prvku pole, můžete použít následující kód:
int firstElement = *array;
Po dokončení práce s polem je nutné uvolnit vyhrazenou paměť pomocí funkce free (). Chcete-li například uvolnit paměť vyhrazenou pro pole bez velikosti, můžete použít následující kód:
free(array);
Je důležité si uvědomit, že po uvolnění paměti se přístup do pole stává nepřijatelným. Také při použití dynamického přidělování paměti je nutné zajistit, aby byla paměť úspěšně zvýrazněna a aby byla správně uvolněna.
Použití ukazatelů
K vytvoření pole bez uvedení jeho velikosti lze použít funkci alokace paměti malloc (). Tato funkce vezme do vstupu počet bajtů, které je třeba zvýraznit, a vrátí ukazatel na vyhrazenou paměť.
Příklad použití funkce malloc() :
#include #include int main() printf("Введите элементы массива:");for (int i = 0; i < size; i++) printf("Массив:");for (int i = 0; i < size; i++) printf("");free(arr);return 0;>
V tomto příkladu nejprve deklarujeme ukazatel arr a proměnnou size , do které uživatel zadá velikost pole. Poté použijeme funkci malloc () k přidělení paměti pro pole pomocí velikosti vynásobené velikostí prvku pole(v tomto případě sizeof (int)).
Po úspěšném přidělení paměti můžeme pole použít pomocí ukazatelů na jeho prvky. Po ukončení používání pole by mělo být uvolněno pomocí funkce free() , aby nedošlo k úniku paměti.
Použití ukazatelů umožňuje flexibilní práci s poli a neomezuje se na předem stanovenou velikost. Je však nutné být pozorní a správně spravovat paměť, abyste se vyhnuli chybám.