• В чем смысл данного выражения?

    @Alexander1705
    Число в восьмеричной системе счисления: 0177 = 177₈ = 01111111₂
    Ответ написан
    Комментировать
  • Как засунуть n - мерный массив в аргумент функции?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Ну вот, опять знатоки советуют добавить звёздочек и указателей на указатели ):

    Все примеры дальше передают в функцию трёхмерный массив и присваивают v значение его элемента p[1][2][3].

    Если функция принимает массив фиксированных размерностей, то прямо так можно и написать:
    int f(int p[][20][30])
    {
        int i = 1, j = 2, k = 3;
        int v = p[i][j][k];
    }
    ...
    int p[10][20][30];
    f(p);

    Первую размерность (самую старшую) можно опустить.

    Если же нет, то перед вами следующий выбор:

    - у вас старый стандарт С (до С99) -- передавайте указатель на самый первый элемент и значения размерностей. Внутри функции пересчитывайте набор индексов многомерного массива в линейный индекс:
    int f(int *p, int n2, int n3) // p[][n2][n3]
    {
        int i = 1, j= 2, k = 3;
        int v = p[(((i * n2) + j) * n3) + k]; // v = p[i][j][k];
    }
    ...
    int p[10][20][30];
    f(&p[0][0][0], 20, 30);


    - у вас С99 или новее: воспользуйтесь поддержкой языка:
    int f(int n2, int n3, int p[][n2][n3])
    {
        int i = 1, j = 2, k = 3;
        int v = p[i][j][k];
    }
    ...
    int p[10][20][30];
    f(20, 30, p);
    Ответ написан
    5 комментариев
  • Как задать размер массива через аргументы функции?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Но не дает задавать так размеры ("m и n должны иметь константное значение). Как тогда это можно сделать?

    С99 позволяет. Используйте уже С99, 18 лет прошло с момента его принятия.
    Связанный вопрос/ответ про передачу многомерного массива прямо через аргументы функции: Как засунуть n — мерный массив в аргумент функции?
    Ответ написан
    Комментировать
  • Перспективы embedded разработки?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Но многие говорят, что время низкоуровневого программирования прошло, сейчас только веб, C#, Java и т.д.

    Весь вопрос не в том, что время прошло, а в том, где больше всего железок выпускают и строят фабрики/заводы с автоматизацией.
    Что касается низкоуровнего программирования, то время совсем не прошло и специалисты требуются постоянно. Вопрос в другом, что эти специалисты практически не нужны (увы) на наших просторах. Я знаю десяток фирм, в которых есть отделы разработок (сам когда-то возглавлял такой), там специалисты нужны постоянно. Еще знаю с десяток предприятий, которые делают свои железки, там тоже нужны программисты. И всё! Если вы живете в городе-миллионнике, то работу по программированию железок вы найдете в легкую, и очень хорошо оплачиваемую, и интересную (что не всегда)!
    Но если вы родились в городе с меньшим населением, задумайтесь о переезде, возможно и совсем туда.
    Ну и еще немного сменились акценты, если раньше все пытались разработать свою железку, и написать под нее ПО, то теперь для подавляющего числа задач можно взять любой ПЛK и просто посадить инженегра, который на языках МЭК составит вам блок-программу.
    Но тем не менее, область низкоуровневого программирования цветет и пышет.
    Возможно, с выпуском отечественных CPU/SOC и нацеленностью на это нашего законодательства, ситуация как-то и будет меняться в лучшую сторону.
    Ну а пока, в основном хорошо живут те, кто занимается аутсорсом ПО на чужие железки (в основном забугорные).
    Ответ написан
    2 комментария
  • Перспективы embedded разработки?

    Но многие говорят
    - кто эти многие? Диванные эксперты? Или результаты неких исследований?
    С точки зрения количества рабочих мест, веб, C#, Java и т.д. очевидно обгоняет и будет обгонять количество вакансий для программистов роботов и микроконтроллеров.
    Интересность - вообще чисто субъективное дело.

    Мой совет, не слушай многих, и занимайся тем, к чему душа лежит.
    Ответ написан
    Комментировать