const

0

Rozumiem że taki kod nie działa

#include <iostream>
#include <string>
#include <cstdlib>

using namespace std;

void funkcja(char *a)
{
	cout << a;
}

int main(void)
{
	const char * const szNapis = "hello from main";
	funkcja(szNapis);

	system("PAUSE>NUL");
	return 0;
}
ale dlaczego takie coś działą???
<cpp>
#include <iostream>
#include <string>
#include <cstdlib>

using namespace std;

void funkcja(const char *a)
{
	cout << a;
}

int main(void)
{
	const char * const szNapis = "hello from main";
	funkcja(szNapis);

	system("PAUSE>NUL");
	return 0;
}

Przecież wksaźnik też jest stały a parametr funkcji jest zwyczajnym wksaźnikiem na stałą [???]

0

Pierwszy kod nie dziala poniewaz wysylasz wskaznik z przydomkiem const do funkcji ktora przyjmuje zwykly wskaznik. I po prostu typ argumentu funkcji sie nie zgadza.

0

Widocznie nie rozumiesz dlaczego pierwszy kod nie działa.

pzdr,

y.

0

const char * const (staly wskaznik do stalego typu znakowego)oznacza ze nie mozesz modyfikowac ani danych ani wskaznika. Czyli np nie mozesz go tez przesunac.

a const char * (wskaznik do stalego typu znakowego) oznacza ze nie mozesz modyfikowac danych. Natomiast nie ma mowy tutaj o wskazniku. Czyli mozesz go wewnatrz funkcji dowolnie przesunac.

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