1 / 18

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

פוינטרים ומבנים. אתחול והדפסת מערך. #include <stdio.h> #include <stdlib.h> 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){

pennytorres
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. אתחול והדפסת מערך #include <stdio.h> #include <stdlib.h> 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 <stdio.h> #include <string.h> 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. מבני הנקודה והמלבן typedefstruct point{ double x; double y; }point; typedefstruct 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. רשימה משורשרת typedefstruct 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; } } לא לאבד את הראש!!!

More Related