if ist keine Funktion sondern eine (Auswahl)Anweisung.
Es gibt mehrere Varianten, ein Array nach der Definition/Initialisierung mit mehreren Werten (quasi blockweise) zu befüllen:
void initarray(int*d,int n,...)
{
va_list v;
va_start(v,n);
for(int i=0;n--;) d[i++]=va_arg(v,int);
va_end(v);
}
int main()
{
int v[3]; /* Zielarray */
typedef struct{int i[3];} I3; /* Hilfstyp für struct-Kopie */
{ int x[3]={1,2,3}; *(I3*)v=*(I3*)x; }
printf("%d%d%d\n",*v,v[1],v[2]);
{ int x[3]={4,5,6}; memcpy(v,x,sizeof v); }
printf("%d%d%d\n",*v,v[1],v[2]);
*(I3*)v=*(I3*)(int[3]){7,8,9};
printf("%d%d%d\n",*v,v[1],v[2]);
memcpy(v,(int[3]){4,4,4},sizeof v);
printf("%d%d%d\n",*v,v[1],v[2]);
initarray(v,3,9,9,9);
printf("%d%d%d\n",*v,v[1],v[2]);
return 0;
}
http://ideone.com/F51FfV