Whats the total number of чs in:
Q: Ссылка на динамический массив в виде аргумента функции У меня есть динамический массив, пишу функцию для печати значений.
Создаю указатель на массив 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[]) и нужны ли они в моей ситуации?

A: //  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);
  // то-же самое
}


user
The text includes twelve "ч"s in total.
assistant