Код:C++ указатель и массив Основы
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
char testChar[] = {'a','b','c'};
char *testPointer = testChar ;
cout << testPointer << endl;
return 0;
}
Вопрос:
Когда я использую cout << mypointer
,
- Почему печатать каждую букву массива и беспорядок (см выход) в конце? Мое предположение - когда я вижу указатель указывает на первые буквы, затем второй и т. Д. И печатает материал в конце.
- Что такое беспорядок (см. Вывод) в конце, адрес?
Комментарии:
- Я знаю, что в конце массива там предполагают, чтобы быть пустой указатель права?
- Я узнал об этом год назад и забыл, пожалуйста, помогите мне вспомнить, что происходит.
Выход:
abc 310 367 277_ 377
Program ended with exit code: 0
Точно .. если вы использовали printf == printf ("% s \ n", testPointer); ==, чтобы напечатать строку, вы увидите точно такие же результаты, что показывает, что она не связана с самим cout, а с тем, как была сформирована строка. – Alberto
Вы можете предпочесть инициализировать строки следующим образом: 'char testChar [] =" abc ";'. Это автоматически добавит нулевой ограничитель в конце строки. Если вы просмотрите результаты 'cout << sizeof (testChar);', вы увидите, что на самом деле выделено 4 байта памяти: 3 символа плюс нулевой терминатор. – eigenchris