2013-04-28 2 views
4

Я проверял некоторые типы переменных и получил некоторые запутанные результаты:Понимание вывода TypeID имя()()

#include <iostream> 
#include <typeinfo> 
using namespace std; 

int main(void) { 
    int number = 5; 
    int* pointer = &number; 

    cout << typeid(number).name() << endl;  // i 
    cout << typeid(pointer).name() << endl;  // Pi 
    cout << typeid(&pointer).name() << endl; // PPi 

    return 0; 
} 

i означает int, но что Pi и PPi означают? Pointer int?

+1

Они ничего не значат с точки зрения стандарта C++. Я подозреваю, что вы используете GCC, который использует эту систему для типов имен с 'typeid'. Если вы посмотрите на что-то вроде MSVC, они будут разными. – chris

+1

http://mentorembedded.github.io/cxx-abi/abi.html и предположим, что вы используете gcc: http://gcc.gnu.org/onlinedocs/libstdc++/manual/ext_demangling.html –

ответ

5

Это означает указатель на целое число и указатель на указатель на целое число, соответственно.

-6

Материал, который приходит после двойной косой черты, является комментарием.

например.

int main() { 
    int i = 0; // This is a comment. 
    // This is also a comment. 
    // i 
    // The above line is a comment. 
    // PPi 
    // The above line is ALSO a comment. 
    return 0; 
} 

Надеюсь, что это немного разъяснит.

Сказанное, тот, кто написал этот код, должен означать, что i относится к целому числу, Pi относится к указателю на целое число, а PPi означает указатель на указатель на целое число.

+2

-1 Большая часть этого «Ответ» - не настоящий ответ. OP явно использует комментарии для указания вывода операторов 'cout'. –

4
  • я: целое
  • Pi: указатель на целочисленную переменную
  • PPI: указатель на указатель на целочисленную переменную
Смежные вопросы