В *
и &
операторы несколько перегружены и это легкая ошибка.
typename * variable
//e.g.
int * status;
объявляет переменную типа Int - оператор *
в этом случае является обязательным для TypeName и становится модификатором.
* variable
означает the contents of the address pointed to by variable
#include <iostream>
int main() {
char text[] = "hello, world!";
char* p = text; // declare 'p' as a 'char*' and point it to 'h'
*p = 'H'; // change the first letter of text to a capital
std::cout << text << '\n';
return 0;
}
Живая демонстрация: http://ideone.com/mmi9UH
Существуют различные способы, вы можете написать эти заявления, некоторые программисты предпочитают ставить *
на левой стороне при объявлении переменных, чтобы сделать это отличное от
int* status;
int * status;
int *status;
все объявляют одну и ту же переменную. Тем не менее, он становится мутным, используя первую форму, когда вы должны объявить несколько переменных
int* p1, p2;
объявляет указатель p1, но p2 это просто INT
int * p1, * p2;
int *p1, *p2;
объявить два указателя. Левша-указатель типа имеют тенденцию делать
int* p1;
int* p2;
Чтобы дать вам подсказку: в чем разница между изменением адреса на конверте, чтобы письмо переходило в другой дом и отправляло другое письмо на тот же адрес? –