Initialiser un structure avec un membre tableaux de pointeurs sur char

Bonjour,
Je n'arrive pas a m'en sortir pour afficher le contenu d'un tabeau de pointeur de char puis afficher chaque entrée du tableau en C pure , pas de c++ ou de list ou de vector ...

typedef struct 
{
    char **tab;
} PTAB;

PTAB ar_tab = { "un", "deux", "trois", "quatre", "cinq", "six", '\0'};

int myfunc(void)
{
    char **item = NULL;
    
    for(int i = 0; i < 6; i++)
    {
        *item = ar_tab.tab[i];
        printf("%s\r\n", *item);
    }
    return 0;
}

J'ai des erreurs au niveau de l'initialisation de la structure.
je ne sais pas si le membre tab de la structure doit être initialisée de cette façon:
char *tab[] ou
char **tab ou
const char *tab[];

Merci de votre aide.

Oui ton initialisation de ar_tab, n'est pas bonne.
quelque chose comme ça doit mieux fonctionner

typedef struct 
{
    char **tab;
} PTAB;

PTAB ar_tab = {(char*[]){ "un", "deux", "trois", "quatre", "cinq", "six", nullptr}};

int myfunc(void)
{
    char *item = NULL;
    int i=0;
    while(ar_tab.tab[i] != nullptr) {
        item = ar_tab.tab[i];
        printf("%s\r\n", item);
        i++;
    }
    return 0;
}

Apparement il reject cette ligne:

src/main.c:9:16: warning: initializing 'const char **' with an expression of type 'char *[7]' discards qualifiers in nested
      pointer types [-Wincompatible-pointer-types-discards-qualifiers]
PTAB ar_tab = {(char*[]){ "un", "deux", "trois", "quatre", "cinq", "six", NULL}};

j'ai du mettre le membre tab en
char *tab car j'avais mis const et ca ne passe pas à moins que je puise mettre
{(const char
[]) .....

en tous cas ca fonctionne et merci.
j'avais trouvé une solution mais pas terrible car je devais initialiser tab comme char *tab[20] et les string devait être de longueur fixe en ajoutant des blancs.
En blayant chaque caractère de la string pour les afficher.

#include <stdio.h>

typedef struct 
{
    const char *tab[20];
} PTAB;

PTAB ar_tab = { "un    ", "deux  ", "trois ", "quatre", "cinq  ", "\0" };

int main(void)
{   
      
    char *item = NULL;
    
    for(int i = 0; i < 5; i++)
    {
        item = 0;
        for(int j = 0; j < 6; j++) {
            if(item == 0) {
                item = (char *)ar_tab.tab[i];
            }
            if (item && item[0])// && pgm_read_byte(item[j]))
            {                
                printf("%c",item[j]);                    
            }
        }
        printf("\r\n");      
    }

    return 0;
}