#c
#c
Вопрос:
Кто-нибудь может объяснить, почему этот код выводит ‘A’, а не его адрес в памяти?
#include <iostream>`
#include <unistd.h>
#include <sys/mman.h>
using namespace std;
#define PAGESZ 0x1000
int main() {
char *p = (char*) mmap(NULL, PAGESZ, PROT_READ | PROT_WRITE,
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
*p = 'A';
cout << p << endl;
}
Комментарии:
1. Вы ожидаете
char *str = "abc"; cout << str;
напечатать адрес указателя str или строкуabc
?2. О .. я понимаю… Он обрабатывает его как строку в стиле C… Вот что я получаю за такое смешивание C и C . Спасибо!
3. Чтобы напечатать адрес, выполните
cout << (void *)p
. Это использует другую перегрузкуoperator<<()
, которая печатает адрес, а не обрабатывает адрес как первый символ строки в стиле C.