pytanie dotyczące tablic w c++

pytanie dotyczące tablic w c++
B4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
1

Wiem że nazwa tablicy to adres pierwszego jej elementu. Ostatnio jednak spotkałem się z przykładem, gdzie była tablica znaków char, a potem była instrukcja: cout << nazwatablicy; Wyświetliło wtedy wszystkie elementy tablicy, a nie adres pierwszego elementu. Podobna sytuacja ma miejsce, gdy chce przekazać tablice char do funkcji. Zamiast przekazać adres pierwszego elementu, to tablica przekazuje całą swoją zawartość.

Kopiuj
#include<iostream>

void sprawdzenie(char x[]);

using namespace std;

int main()
{
    char y[] = {'A', 'B', 'C', 'D'};
    
    sprawdzenie(y);
    return 0;
}
void sprawdzenie(char x[])
{
    cout << x;
}

Dlaczego tak sie dzieje?

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
2

Zawsze przekazywany adres pierwszego elementu, a skoro rozmiar elementu znany to adres każdego kolejnego też nijako masz.
jeżeli wyświetlasz: cout<<nazwa_ciągu_znakow; to wyświetlany jest ciąg do pierwszego znaku '\0';
dokładnie to samo się dzieje przy: cout<<"ala ma kota";
dokładnie to samo się dzieje przy: char napis[]="ala ma kota"; cout<<napis;
dokładnie to samo się dzieje przy: char *napis="ala ma kota"; cout<<napis;
dokładnie to samo się dzieje przy: char napis[]={ 'a','l','a',' ','m','a',' ','k','o','t','a','\0'}; cout<<napis;
ale tak jak ty to użyleś: char napis[]={ 'a','l','a',' ','m','a',' ','k','o','t','a'}; cout<<napis; nie wiadomo co się stanie, po "ala ma kota" możesz zobaczyć różne śmieci z pamięci

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

@_13th_Dragon: Ok. dzięki za pomoc.

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.