[C++] Podstawowe pytania o "char"


#1

Witam,

proszę mi wybaczyć, być może piszę totalne podstawy, ale jeszcze nie opanowałem do końca C++. Dokładnie moje pytania będą związane z typem zmiennych char.

  1. Mam coś takiego: "const char* nazwa_pliku;" i chciałbym zawrzeć w tej zmiennej taki tekst (ścieżkę dokładnie): "..\modele\Test.txt". Dlaczego gdy wyświetlam w konsoli zawartość tej zmiennej to wyskakuje mi taki wynik "..modeleTest.txt"? Dlaczego pomija te znaki "/"?

  2. Co dokładnie oznacza "*" to char? Czy to oznacza że zmienna jest nieskończenie wielka lub do tablicy znaków char za każdym razem mogą być bez ograniczeń dopisywane nowe znaki?

Z góry dzięki.


(system) #2

http://www.cplusplus.com/doc/tutorial/pointers/

http://www.possibility.com/Cpp/const.html


(Sawyer47) #3

Ad 1. http://pl.wikibooks.org/wiki/C/Napisy#Znaki_specjalne

Backslash służy do wpisywania do napisów znaków specjalnych, jeśli chcesz prowadzić znak '\' trzeba poprzedzić go backslashem, czyli napisać "\".

Ad 2. W C zapis nazwa_typu* oznacza typ "wskaźnik na typ nazwa_typu". W wskaźniki to po prostu adresy w pamięci. Np. pisząc

const char * napis = "Hello, world!"

definiujesz wskaźnik na typ znakowy i kompilator umieszcza w nim adres napisu "Hello, world!".


#4

Jeszcze jedno pytanie:

w internecie znalazłem kod, który przedstawia użycie trójwymiarowych tablic. Są tam takie dwie linijki:

double ***tab;

          tab=new double **[w];

Więc, czy wstawiając "*" przy tworzeniu tablic, ustalamy że tablica będzie w jakimś sensie nieskończona?


(Sawyer47) #5

Nie, znak * ma parę znaczeń:

  • operator mnożenia

  • deklaracja typu wskaźnikowego (czyli to co opisałem powyżej oraz właśnie tak jak w przytoczonym przykładzie)

  • operator dereferencji/wyłuskania wskaźnika