Добавление Git-Bash в новый терминал Windows

Передача многомерного массива в качестве аргумента функции. Передача одного тусклого массива в качестве аргумента более или менее тривиальна. Давайте рассмотрим более интересный случай прохождения 2-мерного массива. В C вы не можете использовать указатель на конструкцию указателя (int **) вместо 2 dim-массива. Приведем пример:

void assignZeros(int(*arr)[5], const int rows) {
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < 5; j++) {
            *(*(arr + i) + j) = 0;
            // or equivalent assignment
            arr[i][j] = 0;
        }
    }

Здесь я указал функцию, которая принимает в качестве первого аргумента указатель на массив из 5 целых чисел. Я могу передать в качестве аргумента любой 2-мерный массив, который имеет 5 столбцов:

int arr1[1][5]
int arr1[2][5]
...
int arr1[20][5]
...

Вы можете прийти к идее определить более общую функцию, которая может принимать любые 2 dim-массива и изменять сигнатуру функции следующим образом :

void assignZeros(int ** arr, const int rows, const int cols) {
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            *(*(arr + i) + j) = 0;
        }
    }
}

Этот код будет скомпилирован, но вы получите ошибку времени выполнения при попытке присвоить значения так же, как и в первой функции. Таким образом, в C многомерные массивы не совпадают с указателями на указатели ... указателями. Int (* arr) [5] является указателем на массив из 5 элементов, int (* arr) [6] является указателем на массив из 6 элементов, и они являются указателями на разные типы!

Ну, как определить аргументы функций для более высоких измерений? Просто, мы просто следуем шаблону! Hier ist та же функция, настроенная на выбор массива из трех измерений:

void assignZeros2(int(*arr)[4][5], const int dim1, const int dim2, const int dim3) {
    for (int i = 0; i < dim1; i++) {
        for (int j = 0; j < dim2; j++) {
            for (int k = 0; k < dim3; k++) {
                *(*(*(arr + i) + j) + k) = 0;
                // or equivalent assignment
                arr[i][j][k] = 0;
            }
        }
    }
}

Как вы ожидали, в качестве аргумента может принимать любые 3-х мерные массивы, которые имеют во втором измерении 4 элемента и в третьем размерность 5 элементов. Любое подобное было бы в порядке:

arr[1][4][5]
arr[2][4][5]
...
arr[10][4][5]
...

Но мы должны указать все размеры размеров до первого.

25
задан Mendy 1 July 2019 в 16:38
поделиться

1 ответ

Это - полный ответ ( GitBash + цветовая схема + значок + контекстное меню )

1) профиль значения по умолчанию Набора:

"globals" : 
{
    "defaultProfile" : "{00000000-0000-0000-0000-000000000001}",
    ...

2) Добавляют, что профиль GitBash

"profiles" : 
[
    {
        "guid": "{00000000-0000-0000-0000-000000000001}",
        "acrylicOpacity" : 0.75,
        "closeOnExit" : true,
        "colorScheme" : "GitBash",
        "commandline" : "\"%PROGRAMFILES%\\Git\\usr\\bin\\bash.exe\" --login -i -l",
        "cursorColor" : "#FFFFFF",
        "cursorShape" : "bar",
        "fontFace" : "Consolas",
        "fontSize" : 10,
        "historySize" : 9001,
        "icon" : "%PROGRAMFILES%\\Git\\mingw64\\share\\git\\git-for-windows.ico", 
        "name" : "GitBash",
        "padding" : "0, 0, 0, 0",
        "snapOnInput" : true,
        "startingDirectory" : "%USERPROFILE%",
        "useAcrylic" : false        
    },

3) Добавляет цветовую схему

"schemes" : 
[
    {
        "background" : "#000000",
        "black" : "#0C0C0C",
        "blue" : "#6060ff",
        "brightBlack" : "#767676",
        "brightBlue" : "#3B78FF",
        "brightCyan" : "#61D6D6",
        "brightGreen" : "#16C60C",
        "brightPurple" : "#B4009E",
        "brightRed" : "#E74856",
        "brightWhite" : "#F2F2F2",
        "brightYellow" : "#F9F1A5",
        "cyan" : "#3A96DD",
        "foreground" : "#bfbfbf",
        "green" : "#00a400",
        "name" : "GitBash",
        "purple" : "#bf00bf",
        "red" : "#bf0000",
        "white" : "#ffffff",
        "yellow" : "#bfbf00",
        "grey" : "#bfbfbf"
    },  

4 GitBash) добавить замену контекстного меню "Windows Terminal Here"

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Windows terminal here"
"Icon"="C:\\Users\\{YOUR_WINDOWS_USERNAME}\\AppData\\Local\\Microsoft\\WindowsApps\\{YOUR_ICONS_FOLDER}\\icon.ico"

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="\"C:\\Users\\{YOUR_WINDOWS_USERNAME}\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe\""
  • щелчка правой кнопкой {YOUR_WINDOWS_USERNAME}
  • создает папку значка, поместил значок там и заменяет {YOUR_ICONS_FOLDER}
  • сохраняет это в whatever_filename.reg файл и выполняет его.
11
ответ дан 27 November 2019 в 03:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: