int main(int argc, const char *argv[]) { int main(int argc, const char **argv) {
В первом случае функция получает указатель на массив, во втором - просто указатель
Я под массивом понимаю std::vector или std::array
отрицательный индекс в C/С++ никогда бы не работал, потому что элементы массива индексируются 0..N-1.
0..N-1. Любой индекс вне этого диапазона, а значит и отрицательный - это UB.
Если цепляться к запятым
size_t. Который всегда - беззнаковое целое такого размера, чтобы им можно было индексировать всю оперативку на данной архитектуре - так в Стандарте языка написано.
до 1996 года. Это было абсолютное царство 32х разрядных машин. Даже первые Pentium адресовали мало. И никто не думал о том что когда-то разрядная сетка адреса будет удвоена.
Вот есть кэш TLB, не понимаю, кто отвечает(сам блок управления памяти или ОС) за замещения при заполнении.
К примеру это за O( log(n) ) параллельно можно реализовать аппаратно, найти наименьшее. Если места на N компараторов хватит(не разбираюсь в масштабах).
нужно заменить везде точки на запятые и запятые на точки?
pinMode(10. OUTPUT)
или digitalWrite(10. HIGH)
вместо точки должна быть запятая разделяющая параметры.digitalWritefl0, HIGH)
вместо digitalWritef
должно быть digitalWrite(
, а вместо l0
судя по всему должно быть 10
. ну так pread и нет в POSIX, если я правильно понял.
Его переименовали в pread64.
непонятно конечно
/* Convert the multibyte character string in argv[2] to a
wide character string. */
if (mbstowcs(wcs, argv[2], mbslen + 1) == (size_t) -1) {
можно примерчик?
mb*towc*
, например mbstowcs.
Griboks, будьте добры, продемонстрируйте хотя бы одно отличие. Ну, типа, "если написать <нечто>, то аргумент функции записанный как массив поведёт себя так, а указатель -- иначе".