Si prega di dare un'occhiata a questo programmadifficoltà nel passare struttura letterale come parametro di funzione
#include<stdio.h>
#include<string.h>
typedef struct hs_ims_msrp_authority
{
int host_type;
char buf[50];
int port;
}hs_i;
int main()
{
char dom[50];
int i = 10, j = 20;
strcpy(dom, "ine");
fun((hs_i){i, dom, j}); // doesnt work
fun((hs_i){i, "dom", j}); // this works
}
int fun(hs_i c)
{
printf("%d %s %d\n", c.host_type, c.buf, c.port);
}
In chiamata alla funzione di divertimento in principale; come mai funziona la funzione call quando viene passato string letterale ("dom") dove, come quando viene passata la variabile array (dom), non funziona?
Per rendere il lavoro variabile dovrebbe essere tipizzato in modo specifico? o c'è qualche altro modo?
@Sibrajas: facendo questo 'divertente ((hs_i) {i, * Dom, j})' sarebbe solo copiare la prima charecter in dom, ma non l'intera stringa. – rik
@prasunbheri Non ho dato questo (divertente ((hs_i) {i, * dom, j}) come risposta.Ho appena spiegato perché fun ((hs_i) {i, dom, j}); non funzionerà. –