Матрица с переменным размером для функций [дубликат]

Изнутри контейнера localhost всегда ссылается на текущий контейнер. Он никогда не ссылается на другой контейнер, и он никогда не ссылается ни на что другое, работающее на вашей физической системе, которое находится не в одном контейнере. Обычно не рекомендуется делать исходящие подключения к localhost или настраивать localhost как ваш хост базы данных.

Из оболочки вашей хост-системы localhost может ссылаться на демоны, запущенные в вашей системе вне Docker , или портам, которые вы опубликовали с параметрами docker run -p.

Из другой системы localhost ссылается на систему, из которой она вызывается.

Что касается IP-адресов, localhost всегда 127.0.0.1, и этот IP-адрес является особым и всегда localhost и ведет себя так же, как указано выше.


Если вы хотите подключиться к контейнеру. ..

... из другого контейнера, лучший способ - убедиться, что они находятся в одной сети Docker (вы запустили их из того же файла DAMK, создающего YAML, вы сделали docker network create и затем docker run --net ... в той же сети) и использовать внутреннюю службу DNS Docker, чтобы ссылаться на них с помощью контейнера --name или его имени в файле Docker Compose YAML и номере порта внутри контейнера. Даже если цель имеет опубликованный порт с параметром docker run -p или Docker Compose ports:, используйте номер порта second (контейнер-внутренний).

... со стороны Docker, убедитесь, что вы запустили контейнер с опцией docker run -p или Docker Compose ports: и подключитесь к IP-адресу хоста хоста, используя первый номер порта из этой опции.

... из окна терминала или браузера на том же физическом хосте, а не в контейнере, в этом случае и только в этом случае localhost будет работать последовательно.


За исключением:

Если вы запустили контейнер с --net host, localhost ссылается на физический хост, и вы находитесь в сценарии «окно терминала на одном физическом узле».

Если вы не можете использовать несколько серверов в одном контейнере, вы можете использовать localhost для связи между ними.

Если вы работаете в Kubernetes и у вас есть несколько контейнеров в одном контейнере, вы можете использовать localhost для связи между ними. Между пакетами вы должны настроить службу перед каждым модулем / развертыванием и использовать DNS-имена формы service-name.namespace-name.svc.cluster.local.

11
задан haccks 1 January 2016 в 23:33
поделиться

2 ответа

Самый простой способ (для C99 и последний)

void printArry(int a, int b, int arr[a][b]){
    /* what goes here? */
}  

Но существуют и другие способы

void printArry(int a, int b, int arr[][b]){
    /* what goes here? */
}   

или

void printArry(int a, int b, int (*arr)[b]){
    /* what goes here? */
}   

и немного путают , который будет работать только как функция protype

void printArry(int a, int b, int arr[*][*]);
14
ответ дан Community 26 August 2018 в 01:09
поделиться

На самом деле это не ответ, а расширенный комментарий к комментарию вопроса OP: «ну, вы можете передать массив, не зная количества строк с этим, но тогда как вы узнаете, когда прекратить печать строк?»

Ответ: как правило, вы не можете, не передавая размер массива тоже. Посмотрите на этот 1-D пример, который разбивает размер массива.

#include <stdio.h>

int procarr(int array[16], int index)
{
   return array[index];
}

int main (void)
{
    int arr[16] = {0};
    printf("%d\n", procarr(arr, 100));
    return 0;
}

Вывод программы (хотя все элементы, инициализированные на 0):

768

Это было неопределенное поведение и не было предупреждения о компиляторе. C не обеспечивает защиту от переполнения массива, за исключением инициализаторов определения массива (хотя такие инициализаторы могут определять длину массива). Вы также должны передать размер массива, как в

#include <stdio.h>

int procarr(int array[16], size_t index, size_t size)
{
    if (index < size)
        return array[index];
    return -1;                  // or other action / flag
}

int main (void)
{
    int arr[16] = {0};
    printf("%d\n", procarr(arr, 100, sizeof arr / sizeof arr[0]));
    return 0;
}

Выход программы:

-1
1
ответ дан Weather Vane 26 August 2018 в 01:09
поделиться
Другие вопросы по тегам:

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