Witam,
pozno troche, ale mam pytanko:
#include <iostream>
using namespace std;
int main(){
char a[]="Ala ma kota";
char* b="Ala ma kota";
//int *wsk=100;
cout<<a<<'\n';
cout<<b<<'\n';
//cout<<wsk;
return 0;
}
Jak widac 6. oraz 9. linie kodu dalem w komentarze, bo kompilator glupieje, i slusznie.
4. linia kodu jest jak najbardziej logiczna, bo mamy tablice char'ow, czyli jeden za drugim jakis znak w tablicy, ale:
Totalnie błędna byłaby sytuacja, kiedy chcemy nadać zmiennej wskaźnikowej określoną wartość, bez wcześniejszego przypisania wskaźnika do zmiennej.
Wlasnie zacytowalem slowa pewnego kursanta jezyka C++. Slowa te pochodza ze strony p-programowanie.pl. Natomiast w 5. linii kodu widzimy wlasnie pusty wskaznik (bo nie ma odwolania do zadnej zmiennej typu char), do ktorego wpisalem "Ala ma kota". Ten wskaznik nie odwoluje sie do zadnej zmiennej,a to oznacza, ze ten program nie powinien dzialac.
Dodatkowo jesli mialbym np. wskaznik:
int *wsk;
to ten wskaznik moze wskazywac tylko i wylacznie na zmienna typu int, a co my widzimy w przypadku, ktory przed chwila przytoczylem? Nie dosc, ze wskaznik nie wskazuje na inna zmienna, to przechowuje nie ten typ danych co potrzeba, bo "Ala ma kota" to raczej tablica char'ow, a nie char.
Wiem, ze w C++ mozna to zastapic (a nawet trzeba, bo kompilator daje ostrzezenie) string'ami, ale jednak... potrzebowalbym kogos, kto mi to dosadnie wytlumaczy. Tylko ten przypadek uzycia wskaznika.
Dziekuje i dobranoc.