Przekazywanie tablicy do funkcji przez referencję

Przekazywanie tablicy do funkcji przez referencję
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam,

Chcę przekazać do funkcji ciąg znaków przez referencję (odnośnik). Nigdy tego nie robiłem, jednak mam zadanie, w którym muszę to zrobić. w treści mam obostrzenie, iż muszę przekazać do funkcji test jako parametr char& do ciągu znaków. Czy mógłby mi ktoś pomóc? Bo nie wiem jak to zrobić.
Zrobiłem taki przykładowy kod, ale to nie działa.

Kopiuj
#include <iostream>
using namespace std;

void test(char&);

int main() {
	char t[] = "test";
	fun(t);
	return 0;
}

void test(char& ref){
}

Zresztą nawet jeśli w mainie chcę zrobić:

Kopiuj
char &oo = t;

to też wyrzuca mi błąd:

Kopiuj
cannot convert parameter 1 from 'char [5]' to 'char &'

Będę wdzięczny za wszelkie wskazówki/pomoc.

zamiana znacznika <ort> na <code class="none"> - @furious programming

loominartz
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
0

Możesz to zrobić tak, ale musisz sztywno definiować rozmiar łańcucha:

Kopiuj
void fun(char (&lancuch)[5]) 

Ale nie lepiej użyć stringa i zrobić to znacznie prościej?

Kopiuj
void fun(string& lancuch) 
spartanPAGE
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
void test(const char *str){ /* ... */ }
  • Rejestracja: dni
  • Ostatnio: dni
0

Dziękuję za wszelką pomoc. Już śpieszę z wyjaśnieniami. loominartz - string z chęcią bym użył, gdybym mógł, ale w zadaniu mam jasno określone, że ma to być typ char& - Funkcja test otrzyma jako parametr char&, więc niestety string odpada. Nie rozumiem stwierdzenia MoorfoxD, że "Inaczej jest napisane w jego zadaniu i inaczej on to rozumie." Nie mogę przekazywać do funkcji tablicy przez wskaźnik, tak jak to napisałeś, bo mam narzucony typ char&, czyli referencję...

spartanPAGE
  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
#include <cstdio>

void fun(char &strRef){
	printf("%s", &strRef);
}

int main(){
	char *text = "Hello Babe";
	fun(*text);
}
  • Rejestracja: dni
  • Ostatnio: dni
0

Bardzo dziękuję za całą pomoc :)

n0name_l
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2412
0

Wtf? Co to za bezsensowne zadanie?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.