Ссылка на динамический массив в виде аргумента функции

90
31 декабря 2020, 00:40

У меня есть динамический массив, пишу функцию для "печати" значений. Создаю указатель на массив uint8_t в кол-ве count и сразу обнуляю значения:

uint8_t * arr = new uint8_t[count]();

Функция принимает указатель на динамический массив:

void f(uint8_t * arr)

Тоже самое, но не создаю копию указателя, а использую передаваемый указатель:

void f(uint8_t * &arr)

Всё ли верно я понимаю и делаю, и как сказать, что значения менять внутри функции я не собираюсь? В каком месте должен быть const? Что значат квадратные скобки в записи int main(int argc, char* argv[]) и нужны ли они в моей ситуации?

Answer 1
//  g++ -c -Wall -Wpedantic transpoint.cpp
# include <cstdint>
# include <cstddef>
void g(uint8_t * x){ }
void h(uint8_t * & x){ }
void i(uint8_t * * x){ }
void cg(uint8_t const * x){
  // тип аргумента слева от const - защищён от изменения
  // данные в массиве изменять нелья,
  // сам указатель можно 
 }
void ch(uint8_t * const & x){
  // слева от const это указатель
  // x - это ссылка на указатель, который менять нельзя
  // а данные можно
  }
void ci(uint8_t * const * x){
  // то-же самое, что ссылка на указатель, но использовать надо 
  // с добавлением ещё одной звёздочки
  // x - это плавающий указатель на константный указатель.
  // x - менять можно , *x - нет
  // (*x)[i] - можно
  }
void f() {
    size_t count = 10 ;
    uint8_t * arr = new uint8_t[count]();
    g(arr);
    h(arr);
    i(&arr);
    cg(arr);
    ch(arr);
    ci(&arr);
    delete[] arr; }
namespace{
  int main(int argc, char* argv[]);
  // argv - массив указателей char*
  int main(int argc, char * * argv);
  // то-же самое
}
READ ALSO
На jQuery по клику удалить часть строки &lt;li&gt;

На jQuery по клику удалить часть строки <li>

Есть выпадающий список ul li, который появляется при клике по полю инпутаДо клика ul li не существует на странице

114
Имитация ввода текста

Имитация ввода текста

В данном коде текст вставляется в форму сразу весьКак сделать что-то на подобии animate(), чтобы пользователь видел как в форме печатается автоматически...

129
Не отображается код клавиш PageDown, PageUp

Не отображается код клавиш PageDown, PageUp

Собственно не отображется код клавиш PageUp, PageDown и 4 стрелки, которые находятся внизу

110
как сделать цикл из классов

как сделать цикл из классов

Как правильно написать цикл для увеличения цифр (обоих, которые идут и после а и после _) с шагом 1 до 33(включительно)Чтоб получалось

116