Proszę spojrzeć na ten programkłopoty w przejściu strukturę dosłownego jako parametr funkcji
#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);
}
W wywołaniu funkcji zabawy w głównym; jak działa wywołanie funkcji, gdy literał łańcuchowy ("dom") jest przekazywany tam, gdzie jako przekazana zmienna tablicowa (dom) nie działa?
Aby zmienić pracę, należy ją typować w określony sposób? czy jest jakiś inny sposób?
@Sibrajas: robi to 'zabawy ((hs_i) {i, * dom, j})' by skopiować tylko pierwszy charecter w dom, ale nie cały ciąg. – rik
@prasunbheri Nie podałem tego (zabawna ((hs_i) {i, * dom, j}) jako odpowiedź. Właśnie wyjaśniłem, dlaczego zabawa ((hs_i) {i, dom, j}) nie zadziała. –