Saya belajar tentang fungsi, referensi, dan variabel global. Saya memiliki kode berikut:

    #include <iostream>
    using namespace std;

    int x;
    void f(){ x = 2;}
    
    void g(int &x){ f(); }

    int main() {
        int x=5;
        g(x);
        cout<<x;
    }

Mengapa saya tidak mendapatkan 2 sebagai output? Karena x berubah di dalam g() saya berharap nilai itu dipertahankan.

0
Peter Green 27 Mei 2021, 11:25

2 jawaban

Jawaban Terbaik

Fungsi void f() bekerja pada global x. Parameter yang diteruskan ke void g(int&) tidak digunakan.

x global itu dibayangi oleh otomatis x yang ditentukan dalam main().

Menulis

std::cout << "local " << x << " global " << ::x;

Untuk melihat apa yang terjadi pada kedua variabel.

4
Bathsheba 27 Mei 2021, 08:36

Kita dapat mengakses variabel global jika kita memiliki variabel lokal dengan nama yang sama di C++ menggunakan operator resolusi lingkup (::)

Dalam fungsi utama Anda, Anda hanya perlu menggunakan cout<<::x;

Untuk pemahaman yang lebih baik, silakan lihat kode sederhana berikut atau lihat tautan ini

Bagaimana cara mengakses variabel global dalam lingkup lokal?

#include <iostream>
using namespace std;
 
int x = 5;     // Global x 
int main()
{
    int x = 2; // Local x
    cout << "Value of global x is " << ::x << endl;
    cout << "Value of local x is " << x;
    getchar();
    return 0;
}
0
ruggeinstein 27 Mei 2021, 08:50