Czas na sfinalizowanie tablic w języku C! Oto Waszym oczom ukazują się ostatnie akapity odnośnie różnorodności tablic. Sam jestem zaskoczony, że jest tego aż tyle. Okazuje się po tym wszystkim, że tablica w języku C nie kończy się na jednym sposobie budowania. Zaprezentowałem Wam już wiele metod, a teraz czas na tę ostatnią odmianę jaką jest literał złożony. Co prawda, to nie dotyczy stricte tablic bo w ten sposób można definiować struktury, aczkolwiek skoro nadal przy tym jesteśmy, załatwmy to raz-dwa i zamknijmy za sobą drzwi.

LITERAŁ ZŁOŻONY DLA TABLIC

Przed Wami kolejny zapis istniejący od standardu C99, który pozwala utworzyć tablicę jednak jest ona traktowana jako stała czy też "anonimowa", to znaczy nieprzydzielana do żadnego miejsca w pamięci. Ostatecznie może być "podpięta" do wskaźnika jednak częściej znajduje swoje miejsce jako sztywno "wszczepiona" do funkcji jako parametr "tymczasowy". Składnia jest taka:

(int [3]) {5, 10, 15};

Sama taka tablica niczego nie wnosi, to tak jak gdybyśmy wstawili samą liczbę ze średnikiem. Taka instrukcja widzi stałą liczbę, która po chwili zanika. Możemy podstawić pod wskaźnik tego samego typu i przypisać adres pierwszego jej argumentu. Wówczas literał złożony będzie zachowany:

int *p = (int [3]) {5, 10, 15};

To prawda, że więcej komplikacji niż pożytku, dlatego więcej szczegółów podawać nie zamierzam. Przejdźmy od razu do kodu źródłowego:

#include <stdio.h>

int sum(int array[], int n);

int main(void)
{
	(int [3]) {13, 456, -67};			// literał złożony
	(int []) {510, 780, 56, -74};
	
	int *p = (int [3]) {670, 34, -800};
	
	int totalA = sum((int []) {7, 8, 5, 3, 2, 35, -70}, 7);
	int totalB = sum(p, 3);
	
	printf("Total A = %d\n", totalA);
	printf("Total B = %d\n", totalB);
	getchar();
	
	return 0;
}

int sum(int array[], int n)
{
	int total = 0;
	
	for (int i = 0; i < n; ++i)
	{
		total += array[i];
	}
	
	return total;
}

Przyglądając się funkcji "main" możemy dostrzec niejeden literał złożony, dwa zanikające zaraz po zdefiniowaniu, a trzeci "podpięty" do wskaźnika tego samego typu. Czwarty jest osadzony jako tymczasowy parametr do funkcji sumującej argumenty. Budowa może wzbudzać niechęć, natomiast zawsze wolę zaprezentować żywy przykład, abyście od razu byli świadomi z czym macie do czynienia. Co komu da sam termin?


W taki oto sposób zamykam etap samych tablic w języku C. Literał złożony to ostatnia rzecz o której chciałem napisać w jednym ciągu.

PODOBNE ARTYKUŁY