W jaki sposób poprawnie stworzyć własny typ dla int tablica[] ? Napisałem coś w tym stylu:
#include <stdio.h>
#include <stdlib.h>
typedef int Tablica[];
void InicjujTablice(Tablica * wsk, int rozmiar)
{
wsk = (int *)malloc(rozmiar * sizeof(int));
}
void UsunTablice(Tablica * wsk)
{
free(wsk);
}
int main(void)
{
Tablica tablica;
InicjujTablice(tablica, 5);
UsunTablice(tablica);
}
Błędy i ostrzeżenia z konsoli Linuxa (kompilowane MinGW):
- main.c:8:6: warning: assignment from incompatible pointer type wsk = (int *)malloc(rozmiar * sizeof(int));
- main.c:18:10: error: array size missing in ‘tablica’ Tablica tablica;
- main.c:19:17: warning: passing argument 1 of ‘InicjujTablice’ from incompatible pointer type InicjujTablice(tablica, 5);
- main.c:6:6: note: expected ‘int (*)[]’ but argument is of type ‘int *’ void InicjujTablice(Tablica * wsk, int rozmiar)
- main.c:20:14: warning: passing argument 1 of ‘UsunTablice’ from incompatible pointer type UsunTablice(tablica);
- main.c:11:6: note: expected ‘int (*)[]’ but argument is of type ‘int *’ void UsunTablice(Tablica * wsk)