Presentation is loading. Please wait.

Presentation is loading. Please wait.

פוינטרים ומבנים. אתחול והדפסת מערך #include int * readArray(int size){ int *a, i; a= (int *) malloc (size* sizeof(int)); if (!a) return NULL; for (i=0;i<size;i++)

Similar presentations


Presentation on theme: "פוינטרים ומבנים. אתחול והדפסת מערך #include int * readArray(int size){ int *a, i; a= (int *) malloc (size* sizeof(int)); if (!a) return NULL; for (i=0;i<size;i++)"— Presentation transcript:

1 פוינטרים ומבנים

2 אתחול והדפסת מערך #include int * readArray(int size){ int *a, i; a= (int *) malloc (size* sizeof(int)); if (!a) return NULL; for (i=0;i<size;i++) scanf("%d",a+i); return a; } void printArray (int * a, int size){ int i; for (i=0;i<size;i++) printf ("%d\n",*(a+i));/* a[i] */ }

3 שימוש ב main void main(){ int *arr, n; printf ("Enter size of array\n"); scanf("%d",&n); arr=readArray(n); if (arr==NULL) exit(0); printArray(arr,n); free(arr); }

4 מערך דו מימדי, האמנם? #include void main(){ char a2dim[4][3],i,j; strcpy(a2dim,"Hello world"); for (i=0;i<4;i++){ for (j=0;j<3;j++) printf("%c",a2dim[i][j]); printf("\n"); }

5 מערך דו מימדי באמצעות מצביעים int ** create2Dim(int rows, int cols){ int **a, i; if (!(a=(int **)(malloc (rows* sizeof (int *))))) return NULL; for (i=0;i<rows;i++) if (!(a[i]=(int *)(malloc (cols* sizeof (int))))) return NULL; return a; }

6 שחרור מערך דו מימדי דינאמי void free2Dim(int ** a, int rows){ int i; for (i=0;i<rows;i++) free(a[i]); free(a); }

7 מערך דו מימדי באמצעות מצביעים int ** create2Dim(int rows, int cols){ int **a, i; if (!(a=(int **)(malloc (rows* sizeof (int *))))) return NULL; for (i=0;i<rows;i++) if (!(a[i]=(int *)(malloc (cols* sizeof (int))))){ free2Dim(a,i); return NULL; } return a; }

8 מבנים

9 מבנה הסטודנט struct student{ char name[30]; long id; int grades[8]; };

10 יצירת סטודנט void main(){ struct student st1; strcpy (st1.name,"Shimon"); st1.id=1234; scanf ("%d",&st1.grades[0]); printf("name: %s, id: %d, grade: %d\n", st1.name,st1.id,st1.grades[0]); }

11 סוגי אתחול void main(){ struct student st1= {"Shimon",56689,{80,65,17}}; struct student st2; st2=st1; st1.name[2]='u'; st1.name[4]='a'; printf("%s\n",st1.name); printf("%s\n",st2.name); }

12 מבני הנקודה והמלבן typedef struct point{ double x; double y; }point; typedef struct rectangle{ struct point p1; struct point p2; }rectangle;

13 void main(){ point p, pt = {5.7,6.3}; rectangle rec1, rec2; p.x = 9; p.y = 17.1; rec1.p1 = pt; rec1.p2 = p; rec2.p1.x = 3.5; }

14 פונקציות עם מבנים point middle (point p1,point p2){ point p3; p3.x=(p1.x + p2.x)/2; p3.y=(p1.y + p2.y)/2; return p3; } void main(){ point p, pt = {5.7,6.3},pMid; p.x = 9; p.y = 17.1; pMid=middle(p,pt); }

15 מצביעים למבנים void main(){ struct student * p; p=(struct student *) malloc(sizeof(struct student)); if (!p) return; (*p).id=112233; p->id=112233; free(p); }

16 רשימה משורשרת typedef struct link{ int data; struct link * next; }link;

17 יצירת רשימה void main(){ link *head=NULL, *temp=NULL; int d; printf("Enter the list values:\n"); scanf ("%d",&d); while (d!=-1){ temp=(link *)malloc(sizeof(link)); if (!temp) break; temp->next=head; temp->data=d; head=temp; scanf ("%d",&d); } לא לאבד את הראש!!!

18 הדפסה ושחרור while(temp){ printf("%d ",temp->data); temp=temp->next; } while (head){ temp=head->next; free(head); head=temp; } לא לאבד את הראש!!!


Download ppt "פוינטרים ומבנים. אתחול והדפסת מערך #include int * readArray(int size){ int *a, i; a= (int *) malloc (size* sizeof(int)); if (!a) return NULL; for (i=0;i<size;i++)"

Similar presentations


Ads by Google