Я понимаю, что такое указатель, но для символов и строк это очень смущает меня. У меня есть я кусок кода, как показано ниже:& оператор не создает адреса символов
#include <iostream>
using namespace std;
int main()
{
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
cout << "Address of 'H' is: "; // line 1
cout << &greeting << endl; // line 2
cout << "Address of 'e' is: "; // line 3
cout << &(greeting[1]) << endl;// line 4
cout << "Address of 'l' is: "; // line 5
cout << &(greeting[2]) << endl;// line 6
return 0;
}
и выход:
Address of 'H' is: 0x7fff30f13600
Address of 'e' is: ello
Address of 'l' is: llo
Может кто-то помочь мне объяснить, почему line 4
и line 6
не производит адрес?
Потому что cout << char * специализирован ... вы хотите отдать его в пустоту *, если вы хотите адрес – UKMonkey
Почему вы думаете, что '' Адрес 'H': "' будет печатать строку, но ' & (приветствие [1]) 'не будет? Подумайте, какие они есть. – Simple
попробуйте 'cout << & greeting << & greeting [0]' и посмотрите. И [не используйте 'endl', если вы действительно не хотите его поведения] (http://stackoverflow.com/q/213907/995714), используйте' '\ n'' вместо –