Problem z tablicą przekazywaną w argumencie funkcji(C++)

0

Witam, mam następujący (być może bardzo podstawowy) problem: jeśli przekazuję w argumencie funkcji tablicę inicjowaną operatorem new

 
funkcja(char *tab)

to nie mam dostępu do jej elementów. Mogę skopiować jej zawartość do innej tablicy, ale zmienić nic nie mogę. Program kompiluje się, jednak po uruchomieniu wyrzuca błąd o naruszeniu ochrony pamięci. Jak to obejść?

0

można zmienić - coś spieprzyłeś
może wychodzisz poza przydzieloną pamięć do tej tablicy?

0

Dziękuję za sugestię. Tablice mają ten sam rozmiar, więc to raczej nie to. To maksymalnie uproszczona wersja tego, co potrzebuję zrobić:

 
void zmiana(char* t,char* t1, int size)
{
char* tab1 = new char[size];
tab1 = "sudoo";
	for(int j = 0; j<size; j++)
	{
	t[j] = t1[j]; 
	}
}

int main(){
int size = 5;
char* tab = new char[size];
tab = "abcde";
zmiana(tab,tab1,size);
return 0;
}

Wiem, że zawartość tablic można kopiować prościej, ale nie rozumiem, co jest nie tak z tym kodem.

0

char* tab1 = new char[size];
tab1 = "sudoo";

ten kod działa na takiej samej zasadzie:

int a = 5;
a = 10;

Wykorzystaj strcpy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1