Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.93/56: Рейтинг темы: голосов - 56, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 31.07.2014
Сообщений: 24

Имя массива в С++ это указатель или ссылка?

12.06.2020, 14:18. Показов 12607. Ответов 133
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь понять что такое имя массива в С++! Указатель или ссылка? Сразу скажу что пока рассматриваю только статические массивы.
Теория говорит что это указатель, собственно поэтому для имени массива применима арифметика указателей.
Но! раз это указатель, то значит это переменная под которую компилятор выделил ячейку памяти в которой должен храниться адрес первого элемента массива arr[0]. Раз такая ячейка памяти есть то по идее можно узнать ее адрес так - &arr!
К сожалению такой трюк не работает и получается что &arr==arr! Для меня это никак не укладывается под описание указателя.

Попробовал выяснить по аналогии с простой переменной что такое указатель, а что такое ссылка!
Вот простенький код для простой переменной и результат его выполнения:
Кликните здесь для просмотра всего текста
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        int a = 10;
    int* b = &a;
    int** c = &b;
    cout << "Указатели" << endl;
    cout << "ТИП" << "\t\t" << "int" << "\t" << "int*" << "\t\t" << "int*" << "\t\t" << "int" << "\t" << "int**" << "\t\t" << "int**" << "\t\t" << "int*" << "\t\t" << "int" << endl;
    cout << "ОПЕРАЦИЯ" << "\t" << "a" << "\t" << "&a" << "\t\t" << "b = &a" << "\t\t" << "*b" << "\t" << "&b" << "\t\t" << "c = &b" << "\t\t" << "*c" << "\t\t" << "**c" << endl;
    cout << "Значение" << "\t" << a << "\t" << &a << "\t" << b << "\t" << *b << "\t" << &b << "\t" << c << "\t" << *c << "\t" << **c << endl << endl;
 
    cout << "Ссылки" << endl;
    int& d = a;
    int* e = &d;
    cout << "ТИП" << "\t\t" << "int&" << "\t" << "\t" << "\t" << "int*" << "\t\t" << "int" << "\t" << "int*" << endl;
    cout << "ОПЕРАЦИЯ" << "\t" << "d" << "\t" << "&d" << "\t\t" << "e = &d" << "\t\t" << "*e" << "\t" << "&e" << endl;
    cout << "Значение" << "\t" << d << "\t" << &d << "\t" << e << "\t" << *e << "\t" << &e << endl;


Результат говорит о том что если переменная "b" - указатель на переменную "a", то переменная b находится в памяти по адресу &b и содержит значение адреса переменной a равное &a. Все вполне согласуется с теорией.
Если же переменная "d" - ссылка на переменную "a", то для переменной b вроде как не выделяется памяти, по крайней мере собственного адреса в памяти для переменной d нет и операция &d дает лишь адрес переменной a.

Если поступить аналогично с массивом?
Кликните здесь для просмотра всего текста
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
        const int size = 10;
    int arr[size] = {0,1,2,3,4,5,6,7,8,9};
    int* pArr = arr;
 
    void* a = &arr;         // студия ругается на cout << *a
    void** c = &a;          // студия ругается на cout << **с
    void* d = &a;           // студия ругается на cout << *d
 
    void* b = &pArr;
    void** e = &b;
    void* f = &b;
 
    cout << "arr + i" << "\t\t" << "arr[i]" << "\t" << "*(arr + i)" << "\t" << "&arr" << "\t\t" << "a = &arr" << "\t" << "&a" << "\t\t" << "c = &a" << "\t\t" << "d = &a" << "\t\t" << "*c" << endl;
    
    for (int i = 0; i < 10; i++)
    {
    cout << arr + i << "\t" << arr[i] << "\t" << *(arr + i) << "\t\t" << &arr << "\t" << a << "\t" << &a << "\t" << c << "\t" << d << "\t" << *c << endl;
    }
    
    cout << "pArr + i" << "\t" << "pArr[i]" << "\t" << "*(pArr + i)" << "\t" << "&pArr" << "\t\t" << "b = &pArr" << "\t" << "&b" << "\t\t" << "e = &b" << "\t\t" << "f = &b" << "\t\t" << "*e" << endl;
 
    for (int i = 0; i < 10; i++)
    {
    cout << pArr + i << "\t" << pArr[i] << "\t" << *(pArr + i) << "\t\t" << &pArr << "\t" << b << "\t" << &b << "\t" << e << "\t" << f << "\t" << *e << endl;
    }


Если объявить указатель pArr на массив arr, то видно что для pArr аналогично указателю простой переменной выделяется место в памяти с адресом &pArr в которой содержится адрес первого элемента массива arr[0]. Все как бы укладывается в мои представления.
А что же с именем массива? Ведь утверждается что это указатель на 1й элемент этого массива arr[0].
Операция &arr дает адресс такой же как и у первого элемента массива, как будто нет никакого указателя а есть ссылка по аналогии с обычной переменной!
Но почему же тогда для имени массива доступна арифметика указателя? для обычной ссылки такого ведь нет.
В последнем примере все указатели имеют тип void* (не знаю насколько это корректно), поэтому думаю что корректней следующий код, но результат тот же самый! Имя массива как будто является ссылкой а не указателем.
Кликните здесь для просмотра всего текста
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
const int size = 10;
    int arr[size] = {0,1,2,3,4,5,6,7,8,9};
 
    int* pArr = arr;
 
    int(*a)[size] = &arr;
    int(**c)[size] = &a;
    
    int** b = &pArr;
    int*** e = &b;
    
    cout << "arr + i" << "\t\t" << "arr[i]" << "\t" << "*(arr + i)" << "\t" << "a = &arr" << "\t" << "*a" << "\t\t" << "c = &a" << "\t\t" << "*c" << "\t\t" << "**c" << endl;
    
    for (int i = 0; i < 10; i++)
    {
    cout << arr + i << "\t" << arr[i] << "\t" << *(arr + i) << "\t\t" << a << "\t" << *a << "\t" << c << "\t" << *c << "\t" << **c << endl;
    }
    
    cout << endl;
    cout << "pArr + i" << "\t" << "pArr[i]" << "\t" << "*(pArr + i)" << "\t" << "b = &pArr" << "\t" << "*b" << "\t\t" << "**b" << "\t\t" << "e = &b" << "\t\t" << "*e" << endl;
 
    for (int i = 0; i < 10; i++)
    {
        cout << pArr + i << "\t" << pArr[i] << "\t" << *(pArr + i) << "\t\t" << b << "\t" << *b << "\t" << **b << "\t\t" << e << "\t" << *e << "\t" << endl;
    }



У меня такое представление об указателях, что это переменная которая в памяти имеет собственное место т.е. имеет свой адрес и содержит адрес переменной на которую указывает. примерно как на следующем рисунке:


Все же объясните что такое имя массива? указатель или ссылка? или у меня неправильное представление об этих вещах?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.06.2020, 14:18
Ответы с готовыми решениями:

Указатель или ссылка на указатель. В чем разница?
Есть вопрос про указатели и ссылки на указатели :scratch: Хочу в функциях f1() и в f2() динамически выделить память и возвратить этот...

Указатель на константную строку и имя массива как указатель
Изучаю C. У меня есть указатель на константную строку, и я хочу его изменить путем передачи в функцию. Это работает без проблем: ...

Ссылка на объект в памяти и указатель это одно и тоже?
Разобрался со смыслом различий значимых типов и ссылочных типов, а так же с особенностями их передачи через ref и out. Но не понятно...

133
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
12.06.2020, 21:06
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от IGPIGP Посмотреть сообщение
А человек который пытается применить логику (системно анализировать) имеет ощущения. Я об этом.
Я не согласен, что проблема в логике. Проблема в неверно расставленных ударениях в начале обучения.
Если человек возьмет среднестатистический учебник для начинающих, он будет полон этих неверных ударений и если он потом захочет узнать как же на самом деле, то это будет настоящим мучением. Для автора этот тред полон откровений, потому что его изначально убедили в какой-то особой двойственной природе массивов, в соседних тредах других авторов убедили в какой-то особой магической природе указателей.
Результат даже самой стройной логики будет ложным, если строить ее на ложных предпосылках. Так что я с вами "системно-аналитически" не согласен.
1
248 / 70 / 9
Регистрация: 22.07.2018
Сообщений: 321
12.06.2020, 21:07
Undisputed, я ХЗ как отвечать на очевидные вопросы. Потому что что есть значение указателя уточнили относительно недавно и не обновили ещё все места в стандарте. Поэтому фиксить надо описание addressof.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
12.06.2020, 21:08
Цитата Сообщение от argcargv Посмотреть сообщение
Для начала придётся объяснить, как составность типа должна мешать разыменованию.
Я тут плохо выразился. Имел ввиду в контексте вывода в поток. Попробуйте такое с любым классом, где не перегружен данный оператор.
Преобразование в данном случае мне не понятно. Я знаю что оно происходит когда оно ожидаемо. Почему << потока ждёт такого преобразования? Другими словами, - у программиста отвалится рука набрать указатель, если он ЕГО хочет распечатать? Эта неявность ломает мозг тем кто с этим сталкивается впервые.
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
12.06.2020, 21:10
argcargv,
для меня это не очень очевидно
хотя бы потому что я допускаю что в тот список забыли добавить адреса

но судя по твоим постам не забыли, а не добавили специально
вот это мне и интересно, почему ты считаешь что адреса не добавили спецом
если бы ты рассказал мне об этом, то я бы исправился
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
12.06.2020, 21:24
Цитата Сообщение от IGPIGP Посмотреть сообщение
Попробуйте такое с любым классом, где не перегружен данный оператор.
Какой оператор?
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
struct Array
{
    operator Array const *() const { return this; }
};
 
int main() 
{
    Array a;
    std::cout << a;
}
В данном случае объекты типа Array умеют преобразовываться в указатели.
То, что у потока перегружен operator<< для вывода void *, и поэтому применяется соответствующее преобразование вас не удивляет?
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
12.06.2020, 21:58
Цитата Сообщение от Croessmah Посмотреть сообщение
В данном случае объекты типа Array умеют преобразовываться в указатели.
Ну это уже объяснение. То есть, оператор сдвига будет смотреть операторы допустимых преобразований и выведет что-то если оно выводимо. Радостно.
Цитата Сообщение от Croessmah Посмотреть сообщение
То, что у потока перегружен operator<< для вывода void *, и поэтому применяется соответствующее преобразование вас не удивляет?
Тут нет вопросов. Мы же выводим адрес - значение указателя. Семантически это логично. Новичёк начинает с простых типов, их значений, их адресов. Вы понимаете о чём я говорю, но занимаете позицию непонимающего. Я тоже так умею. Указатель на массив - это умный указатель. Это со временем уже не раздражает, но сначала не кажется логичным. Массивы становятся типами которые "выгодно" отличаются от остальных. Особенно приятно иметь с дело с типовой рекурсией которая так естественна для массивов. Смотрите как создаются массивы для типов не массивов и как они не создаются для самих массивов. Это преобразование мешает инициализации?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
using namespace std;
struct ArrayLileStruct
{
    int a, b;
    ArrayLileStruct()
    :a(0)
    ,b(1)
    {
 
    }
    int operator[](size_t i)
    {
        return i?a:b;
    }
 
};
 
int main()
{
    ArrayLileStruct a,b,c;
 
    decltype(a) //element type is ArrayLileStruct
    abc[]={a, b, c} ;
 
    int
    aa[]={1,2,3};
    decltype(aa)
    bb={11,22,33},
    cc={111,222,333} ;
 
    decltype(aa) //element type is int[3]
    aaa[]={aa, bb, cc} ;//try array of arrays fails
    return 0;
}
0
248 / 70 / 9
Регистрация: 22.07.2018
Сообщений: 321
12.06.2020, 22:07
Цитата Сообщение от IGPIGP Посмотреть сообщение
Тут нет вопросов. Мы же выводим адрес - значение указателя. Семантически это логично. Новичёк начинает с простых типов, их значений, их адресов. Вы понимаете о чём я говорю, но занимаете позицию непонимающего. Я тоже так умею. Указатель на массив - это умный указатель. Это со временем уже не раздражает, но сначала не кажется логичным. Массивы становятся типами которые "выгодно" отличаются от остальных. Особенно приятно иметь с дело с типовой рекурсией которая так естественна для массивов. Смотрите как создаются массивы для типов не массивов и как они не создаются для самих массивов. Это преобразование мешает инициализации?
Отборная шизофазия.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
12.06.2020, 22:15
Цитата Сообщение от argcargv Посмотреть сообщение
Отборная шизофазия.
В общем-то да. Нездоровится. argcargv, а почему вы не объясните? Почему на вопрос новичка высокомерно-высокопарные цитирования с многозначительными надуваниями щёк?
Возьмите и скажите о семантике значений. О том как копируются простые переменные типа int, скажем. О том что массивы некопируемы по своему замыслу и не поддерживают такого поведения и поэтому не передаются по значению. Мой случай инициализации это показывает. То есть родство массивов и указателей в природе массива. А уж как сделано так и сделано.
0
12.06.2020, 22:16

Не по теме:

Цитата Сообщение от IGPIGP Посмотреть сообщение
Мы же выводим адрес - значение указателя.
Значение указателя лишь как-то там (зависит от реализации) представляет адрес.
Вот пример.

0
12.06.2020, 22:19

Не по теме:

Цитата Сообщение от zayats80888 Посмотреть сообщение
Значение указателя лишь как-то там (зависит от реализации) представляет адрес.
Вот пример.
Когда говорят об указателях, обычно придерживаются этих соглашений.

0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
12.06.2020, 22:22
Цитата Сообщение от zayats80888 Посмотреть сообщение
Значение указателя лишь как-то там (зависит от реализации) представляет адрес.
Вот пример.
Там у Croessmah, речь идет о указателе на void и его выводе на печать. Выводится значение и это его значение. Это так же понятно начинающему как и факт того что вывод объекта int выведет число 123 например. То есть это семантически естественно.
0
2 / 2 / 1
Регистрация: 31.03.2018
Сообщений: 11
12.06.2020, 22:27
Сколько информационного шума из-за одного вопроса.

Добавлено через 4 минуты
Если Вы имеете название переменной - то ни то, ни другое. Массив — это область памяти, где могут последовательно храниться несколько значений.

С помощью ссылки можно задавать альтернативное имя для переменной. По сути, ссылка в C++ — это безопасные указатель, которые ссылается на адрес какой-либо переменной.

Например:
C++
1
2
3
4
5
int a = 10; // Объявление переменной a.
int &ra = a; // Создание ссылки на переменную "a"
 
cout << &a << endl; // Вывод на экран адреса переменой a
cout << &ra << endl; // Ссылка "ra" хранит в себе этот же адрес
При выполнении программы, выводимые адрес будут одинаковыми. Например:

Code
1
2
0xbfd86d6c
0xbfd86d6c
При выводе адресов используется оператор &. В данном контексте он является оператором взятия адреса, и не имеет никакого отношения к созданию ссылки.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
12.06.2020, 22:28
Цитата Сообщение от weelhelmer Посмотреть сообщение
Сколько информационного шума из-за одного вопроса.
более того ответ уже был дан
https://www.cyberforum.ru/post14643733.html
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
12.06.2020, 22:30
argcargv,
Почему нет ответа?) Я не ради поспорить, просто ты уверенно заявил, но не обосновал. Как к такому заявлению тогда относится? Появляются вопросы. Например, вот ещё: на что именно ты предлагаешь заменить описание addressof? Что кроме адреса addressof мог бы возвращать? (Ну и предыдущий вопрос).
0
248 / 70 / 9
Регистрация: 22.07.2018
Сообщений: 321
12.06.2020, 22:35
Цитата Сообщение от weelhelmer Посмотреть сообщение
С помощью ссылки можно задавать альтернативное имя для переменной
*для объекта.

Добавлено через 3 минуты
Цитата Сообщение от Undisputed Посмотреть сообщение
Почему нет ответа?
На что? Я вроде ответил почему надо менять описание addressof.
Цитата Сообщение от Undisputed Посмотреть сообщение
на что именно ты предлагаешь заменить описание addressof? Что кроме адреса addressof мог бы возвращать?
Нужно банально написать "pointer to" вместо "address of".
2
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
12.06.2020, 22:42
argcargv,
Тогда название функции не будет соответствовать тому что оно делает. К тому же, значение pointer-а как ты сам отметил вещь неоднозначная. Если бы ты дал ссылку например на Страуструпа где он говорит обо всем этом я бы понял. Иначе это просто выглядит так что ты просто подгоняешь некоторые вещи под то как ты сам видишь эту ситуацию
0
248 / 70 / 9
Регистрация: 22.07.2018
Сообщений: 321
12.06.2020, 22:55
Цитата Сообщение от Undisputed Посмотреть сообщение
Тогда название функции не будет соответствовать тому что оно делает
Это большая проблема?
Цитата Сообщение от Undisputed Посмотреть сообщение
К тому же, значение pointer-а как ты сам отметил вещь неоднозначная
Не помню, чтобы я где-то это отмечал :|
Цитата Сообщение от Undisputed Посмотреть сообщение
Если бы ты дал ссылку например на Страуструпа где он говорит обо всем этом я бы понял.
А при чём тут Страуструп?
Цитата Сообщение от Undisputed Посмотреть сообщение
Иначе это просто выглядит так что ты просто подгоняешь некоторые вещи под то как ты сам видишь эту ситуацию
Что именно подгоняю?
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
12.06.2020, 23:10
argcargv,
Цитирование глючит в телефона но я думаю ты поймёшь что у чему относится:

1) конечно, это проблема. имя функции должно отражать действия которые выполняет эта функция. это же не функция которая написана новичком

2) ты явно не отмечал, но дал ссылку где в качестве значения указателя может быть несколько вариантов

3) можно ссылаться на кого нибудь кто имеет какое то отношение к стандартизации, иначе то о чем ты говоришь не более чем твоё мнение, не имеющее отношение к стандарту о котором мы в данном случае говорим

4) ну типа вординг надо поправить, причём именно так, как это говоришь ты и никак по другому... мне вот интересно ты это сам придумал или можешь ссылаться на того кто занят стандартизацией?

Значит что я хочу..
Если это просто твоё мнение то что бы ты сказал это
Если же это конкретные знания из первоисточника то поделись пожалуйста этим источником
0
248 / 70 / 9
Регистрация: 22.07.2018
Сообщений: 321
12.06.2020, 23:40
Цитата Сообщение от Undisputed Посмотреть сообщение
конечно, это проблема.
Я так не думаю.
Цитата Сообщение от Undisputed Посмотреть сообщение
ты явно не отмечал, но дал ссылку где в качестве значения указателя может быть несколько вариантов
Да. А при чём тут неоднозначность? В случае addressof известно, какое будет значение.
Цитата Сообщение от Undisputed Посмотреть сообщение
можно ссылаться на кого нибудь кто имеет какое то отношение к стандартизации, иначе то о чем ты говоришь не более чем твоё мнение
Где именно моё мнение? Что значения указателей были уточнены позже, чем появился addressof? Это можно проверить тупо найдя пропозал в котором уточнили значения указателей и посмотрев на его дату.
Цитата Сообщение от Undisputed Посмотреть сообщение
ну типа вординг надо поправить, причём именно так, как это говоришь ты и никак по другому
Ну поправь по-другому и посмотри что на это скажут.
Цитата Сообщение от Undisputed Посмотреть сообщение
Если же это конкретные знания из первоисточника то поделись пожалуйста этим источником
Как ты представляешь себе этот первоисточник? Там написано жирным шрифтом, что "нужно менять вординг addressof, а не basic.compound, инфа 100%. Подпись: Страуструп"?
0
Злостный нарушитель
 Аватар для Verevkin
10359 / 5774 / 1274
Регистрация: 12.03.2015
Сообщений: 26,686
12.06.2020, 23:47
Цитата Сообщение от cahmep Посмотреть сообщение
Воот!!!
но судя по твоей картинке ты создал динамический массив, а я про статический писал!
у статического массива вытащи адрес указателя точно также! у меня не получилось - как будто его нет.
Конешна. Для статического массива адрес будет константой. Но его всё ещё можно присвоить переменной и вывести.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.06.2020, 23:47
Помогаю со студенческими работами здесь

как такое правильно писать? это ссылка на указатель?
#include &lt;iostream&gt; using namespace std; char *chch2 = &quot;hello&quot;; char*&amp; f() { char *&amp;chch3 = chch2; return...

Что лучше ссылка или указатель?
Что лучше - ссылка или указатель?

Не удалось найти имя типа или пространства имен пропущена директива using или ссылка на сборку
Доброе время суток.Есть код: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace...

Как ускорить работу. Ссылка или указатель
У меня следующая ситуация. Обработка изображений с EMGUCV. Объект Image весит очень много. Этот объект надо передавать в мой класс. ...

Имя массива как указатель
Используя имя массива как указатель, и применяя адресную арифметику выполнить задание (каждое задание оформить отдельной функцией). Дан...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru