ערכתי לאחרונה בתאריך 20.08.11 בשעה 11:28 בברכה, ldan192
נתחיל מזה ש-(*sizeof(strc זה בעצם גודל של פויינטר (שזה long, כלומר 32/64 ביט).
אתה מבצע אלוקציה מגודל לא נכונה.
הגודל שאתה צריך הוא (sizeof(strc שהוא בעצם 3*(sizeof(int שזה בעצם 3*4 = 12 בתים.מעבר לזה, אתה מעביר פויינטר לא מאותחל.
קוד יותר נכון:
typedef struct Strc { int a,b,c; }strc; void fun(strc **a,int n) { int i; *a=(strc *)malloc(4*sizeof(strc)); for(i=0;i<4;i++) { (*a)[i]->a=i; (*a)[i]->b=i; (*a)[i]->c=i 1; } }
void main() { strc *a; int i; fun(&a,4); printf("value : "); for(i=0;i<4;i ) { printf("=",a[i].b); } printf("\n\n"); }
|
בברכה,
עידן