Witam was.
Ostatnio bawiłem się kodem w C++, konkretnie wskaźnikami. Chciałem stworzyć tablice dynamiczną, następnie za pomocą funkcji powiększyć jej rozmiar o 2 elementy.
O tyle o ile ten kod działa:
#include <iostream>
using namespace std;
void wypisz(int t[],int n)
{
for(int i=0;i<n;i++)cout<<t[i]<<" ";
cout<<endl;
}
int * powieksz(int *tab,int n,int nowy)
{
int *tmp=new int[5];
for(int i=0;i<3;i++)tmp[i]=tab[i];
tmp[3]=8;
tmp[4]=10;
delete [] tab;
return tmp;
}
int main() {
int *tab=new int[3];
tab[0]=2;
tab[1]=3;
tab[2]=5;
wypisz(tab,3);
tab=powieksz(tab,3,5);
wypisz(tab,5);
delete []tab;
return 0;
}
Niestety ten już nie, nie wiem dlaczego. Przecież przekazujemy do funkcji adres tablicy.
#include <iostream>
using namespace std;
void wypisz(int t[],int n)
{
for(int i=0;i<n;i++)cout<<t[i]<<" ";
cout<<endl;
}
void powieksz(int *tab,int n,int nowy)
{
int *tmp=new int[5];
for(int i=0;i<3;i++)tmp[i]=tab[i];
tmp[3]=8;
tmp[4]=10;
delete [] tab;
tab=tmp;
}
int main() {
int *tab=new int[3];
tab[0]=2;
tab[1]=3;
tab[2]=5;
wypisz(tab,3);
powieksz(tab,3,5);
wypisz(tab,5);
delete []tab;
return 0;
}