Aşağıdaki C++ kodu hakkında biraz karıştı:Başlatma
#include <iostream>
using namespace std;
void test(const string& str)
{
static const char * const c = str.c_str();
cout << c << endl;
}
int main(int argc, char* argv[])
{
test("Hello");
test("Nooo");
return 0;
}
değişken c
yana static
ve const
olarak ilan edilir, bu yalnızca bir kez başlatılır edilmemelidir ve başlangıç değerini tutmak süreç tamamlanana kadar? Bu mantığa göre, aşağıdaki çıktıyı bekliyordum:
Hello
Hello
Ama var: değişken c
değeri iki fonksiyonu arasındaki değiştirildi neden
Hello
Nooo
Eğer açıklık getirebilir bile olsa çağrıları const
değişkeni nedir?
Aslında tanımsız değil. ** Dereferencing ** tanımlanmamıştır. Dereferans edildiğinde her zaman geçerli bir adrese sahip olduğundan, geçerli bir programdır. – StoryTeller
@StoryTeller, cout << c << endl; 'işaretçiyi işaret eder. –
@StoryTeller Çıktı operatörü dereferansı kullanır. –