[СИ] структуры, массивы и sizeof().
Язык СИ
ОС UNIX
Ниже приведена небольшая тестовая программа
на проверку sizeof().
#include <stdio.h>
#include <stdlib.h>
//   cd /usr/home/test3test/njx
//   gcc test_sizeof.c -o test_sizeof.cgi
//   ./test_sizeof.cgi
#define N  6
//--- структура параметров хоста ---
typedef struct  {
    int   port;
    char  host[100];
} _lin;
//-------------- main --------------
int main()
{
    _lin  lin[N];  //--- массив структур ---
    int k;
    k=funk_1(lin);
    printf("k=%d\n",k);
    exit(0);
}
//-------------- funk_1 --------------
int funk_1(_lin lin[]){
    int k;
    k=funk_2(lin);
    return(k);
}
//-------------- funk_2 --------------
int funk_2(_lin lin[]){
    int k;
    k=sizeof(lin[0].host);
    //  k=sizeof(_lin.host);
    //  k=sizeof(_lin);
    return(k);
}
Во вложенные функции передается массив lin[ ],
вернее указатель на него.
Выдача этой программы
k=100
т. е. длина массива host.
Мне как раз и нужно в нижней вложенной
функции funk_2() получить длину этого массива.
Там ещё есть закомментированная строка, которую
я тоже попробовал, но с ней не компилится.
Вопрос.
Случайность ли это или правило?
Не скомпилирует ли другой «правильный» компилятор
по другому?
Кто знает прошу ответить.

