• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed C++, Przekazywanie tablicy2D do funkcji jako stały parametr formalny

VPS Starter Arubacloud
0 głosów
324 wizyt
pytanie zadane 16 lutego 2018 w C i C++ przez Jakub 0 Pasjonat (23,120 p.)
zamknięte 16 lutego 2018 przez Jakub 0

Witam, ucząc się z książki c++ szkoła programowania byłem jakiś czas temu (dokładnie wczoraj) na etapie wskaźników na stałe. Teraz dowiedziałem się jak przekazywać tablice dwu wymiarowe do funkcji. Dowiedziałem się że tablica2D jako parametr funkcji to tak naprawdę wskaźnik na tablice n-elementową (czyli coś takiego int (arr*)[n] albo inaczej int arr[][n] ) a więc wskaźnik na wskaźnik...  Mamy zatem coś takiego:

void f(const int arr2D[][3]) { //to const
	//cos tam w srodku 
}

int main(){
	int arr2D[3][3] = {
		{1,1,1},
		{1,1,1},
		{1,1,1}
	};

	f(arr2D);

	return 0;
}

Książka przestrzegała by nie dawać const w parametrze na tablicę dwu wymiarową bo jest ona wskaźnikiem na wskaźnik a nie wskaźnikiem na typ podstawowy. Wtedy to przynosi błędy:

const int a = 10;
int *pt1;
const int **pt2 = &pt1; //nie możliwe

*pt2 = &a;
*pt1 = 11; //bo jest to ryzykowne 

Mimo wszystko moja funkcja f() z przekazaną tablicą nie-const nie powoduje żadnych błędów kompilacji... dlaczego?

Dziękuje za pomoc i pozdrawiam :)

komentarz zamknięcia: już znam wytłumaczenie

1 odpowiedź

0 głosów
odpowiedź 16 lutego 2018 przez Qwerty96 Stary wyjadacz (13,580 p.)
wybrane 16 lutego 2018 przez Jakub 0
 
Najlepsza

Typ parametru funkcji f to

const int(*)[3]

czyli wskaźnik na stałą tablicę z trzema intami. To nie jest to samo co const int**.

komentarz 16 lutego 2018 przez Jakub 0 Pasjonat (23,120 p.)
Dzięki, nie mam pojęcia czemu w książce pisze  że taka konstrukcja jest błędna :/

Podobne pytania

0 głosów
1 odpowiedź 284 wizyt
pytanie zadane 11 stycznia 2021 w C i C++ przez ifuknowme555 Początkujący (410 p.)
0 głosów
1 odpowiedź 1,000 wizyt
pytanie zadane 26 sierpnia 2018 w C i C++ przez Hinzeq Użytkownik (860 p.)
0 głosów
1 odpowiedź 156 wizyt
pytanie zadane 12 listopada 2020 w C i C++ przez rain.deer Początkujący (430 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...