Массивы, указатели и строки

269
05 сентября 2021, 04:40

пример кода:

char *array = "привет";
cout << array;

Почему выводится все слово, а не первая буква?

Answer 1

Непонятно, почему вы ожидали получить один символ.

Ведь если бы указатель был не на char, а, скажем, на int, то вы получили бы не этот int, а численное значение самого указателя (в шестнадцатеричном виде):

int array[] = {1,2,3};
int *ptr = &array[0];
std::cout << ptr << '\n'; // `0x7ffdc12431dc`, а не `1`

(Вроде бы в стандарте не написано, как точно должны выводиться указатели, но на всех компиляторах, которые я видел, они выводятся как шестнадцатеричные числа.)

Для cout указатели на char - это особый случай. cout считает их указателями на начало строк, и выводит как строки.

READ ALSO
C++ rvalue присваивание объекта

C++ rvalue присваивание объекта

Работаю с std::list Есть класс TTimerData (с методами) который надо поместить в лист

232
jQuery получение параметра по id в ASP.NET MVC

jQuery получение параметра по id в ASP.NET MVC

Хочу получить текстовое содержимое по id, например получить "6000118":

123
Заполнение двумерного массива вихрем

Заполнение двумерного массива вихрем

Имеется массив n*n, необходимо его заполнить вихрем, те

240
Данные в select&#39;e не отображаются

Данные в select'e не отображаются

Подскажите, делаю запрос к AD и через консоль вижу все данные, но если пытаюсь добавить в select, то пишет ошибка, где я накосячил с кодом? Может...

197