pytanie dotyczące tablic w c++

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ść.

#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?

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

0

@_13th_Dragon: Ok. dzięki za pomoc.

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