Ho riscontrato un problema nel mio apprendimento del linguaggio C++, in cui una variabile locale in una funzione viene passata alla variabile locale con lo stesso nome in un'altra funzione, entrambe queste funzioni vengono eseguite in main().Variabili locali passate (C++)
Quando questo viene eseguito,
#include <iostream>
using namespace std;
void next();
void again();
int main()
{
int a = 2;
cout << a << endl;
next();
again();
return 0;
}
void next()
{
int a = 5;
cout << a << endl;
}
void again()
{
int a;
cout << a << endl;
}
essa stampa:
2
5
5
Mi aspettavo che ancora una volta() sarebbe dire nullo o 0 dal momento che 'a' è dichiarato ancora una volta lì, eppure sembra per usare il valore che 'a' è stato assegnato in next().
Perché next() passa il valore della variabile locale 'a' a again() se 'a' viene dichiarato un'altra volta in again()?
Nulla passato. 'a' in' again() 'non è stato inizializzato, qualsiasi valore è possibile. – songyuanyao
Concordato quindi il valore di 'a' in è un comportamento indefinito. – drescherjm