1 / 17

Computer Programming

Computer Programming. Using structures in C language Lecture 20. Assignment to Structure Variable. The value of a structure variable can be assigned to another structure variable of the same type , e.g : Library libraryVariable1, libraryVariable2;

savea
Télécharger la présentation

Computer Programming

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. Computer Programming Using structures in C language Lecture 20

  2. Assignment to Structure Variable • The value of a structure variable can be assigned to another structure variable of the same type, e.g : Library libraryVariable1, libraryVariable2; strcpy (libraryVariable1.bookName , “C Programming”); libraryVariable1.ISBN = 1293; libraryVariable2 = libraryVariable1; printf(“%d….%d”,libraryVariable2.bookName, libraryVariable2.ISBN); • Assignment is the only operation permitted on a structure. We can not add, subtract, multiply or divide structures.

  3. Structures within Structures void main () { struct University { char Name [30]; char city [30]; Library libraryVariable; }; University universityVariable; strcpy (universityVariable.Name, “UET”); strcpy (universityVariable.city, “ROME”); universityVariable.libraryVariable.ISBN = 1293; strcpy (universityVariable.libraryVariable.bookName, “C programming”); }

  4. Accessing Structure in Structure scanf(“%d”, universityVariable.libraryVariable.bookName); scanf(“%d”,&universityVariable.libraryVariable.ISBN); printf(“%s…%d”,universityVariable.libraryVariable.bookName, universityVariable.libraryVariable.ISBN);

  5. Passing Structure Variables as Parameters • An individual structure member may be passed as a parameter to a function, e.g. : • validLibraryData (libraryVariable.ISBN); • An entire structure variable may be passed , e.g. : • validLibraryData (libraryVariable); • NOTE:- Structure variable is passed by value not by reference

  6. Example : Passing a Structure Member void validLibraryData (int ISBN); void main(void) { //assuming that Library structure has already defined Library libraryVarialbe; validLibraryData(libraryVariable.ISBN); } void validLibraryData (int ISBN) { printf(“Library ISBN = %d“, ISBN); }

  7. Example :Passing an entire Structure struct Library { int ISBN, copies, PYear; char bookName[30], AuthorName[30], PublisherName[30]; }; void validLibraryData (Library var1); void main (void) { Library libraryVariable; libraryVariable.ISBN = 1293; strcpy (libraryVariable.bookName, “Network Security”); strcpy (libraryVariable.AuthorName, “Martin”); validLibraryData (libraryVariable); } void validLibraryData (Library var1) { printf(“ISBN = %d\n”,var1.ISBN); printf“Book name = %s\n“,var1.bookName); }

  8. Returning a Structure Variable struct Library { int ISBN, copies, PYear; char bookName[30], AuthorName[30], PublisherName[30]; }; Library inputBookInformation (void); void main (void) { Library libraryVariable1; libraryVariable1 = inputBookInformation ( ); printf(“%d…%s”,libraryVariable1.ISBN, libraryVariable1.bookName); } Library inputBookInformation (void) { Library var1; var1.ISBN = 1293; strcpy (var1.bookName, “Network Security”); strcpy (var1.AuthorName, “Martin”); }

  9. Pointers to structure variables • Pointers of structure variablescan be declared like pointers to any basic data type Library var1, *ptrToLibrary; ptrToLibrary = &var1; • Members of a pointer structure type variable can be accessed using (->) operator ptrToLibrary->ISBN =20; strcpy( ptrToLibrary->bookName, “C Programming”);

  10. Pointers to structure variables (Example 1) void main (void) { Library libraryVariable, *PtrToLibrary; libraryVariable.ISBN = 1293; strcpy (libraryVariable.bookName, “Network Security”); strcpy (libraryVariable.AuthorName, “Martin”); strcpy (libraryVariable.PublisherName, “Waley”); libraryVariable.copies = 4; libraryVariable.PYear = 1998; PtrToLibrary = &libraryVariable; PtrToLibrary->ISBN = 3923; PtrToLibrary->copies = 10; cout << “The values are “ << libraryVariable.ISBN << “ , ” << PtrToLibrary->ISBN; } Output: The values are 3923 , 3923

  11. Pass by Reference structure variables to Functions (Example 1) void Function1 (Library *ptr); void main (void) { Library var1; Function1 (&var1); cout << var1.ISBN << var1.bookName << var1.AuthorName; } void Function1 (Library *libraryVariable) { libraryVariable.ISBN = 1293; strcpy (libraryVariable.bookName, “Network Security”); strcpy (libraryVariable.AuthorName, “Martin”); strcpy (libraryVariable.PublisherName, “Waley”); libraryVariable.copies = 4; libraryVariable.PYear = 1998; } Output: 1293 Network Security Martin

  12. Array of Structure (Example 1) void main (void) { Library libraryArray [4]; libraryArray[0].ISBN = 1293; strcpy (libraryArray[0].bookName , “Network Security”); libraryArray[1].ISBN = 9832; strcpy (libraryArray[1].bookName, “C Programming”); libraryArray[2].ISBN = 3832; strcpy (libraryArray[2].bookName , “Technical Report Writing”); cout << libraryArray[0].ISBN << libraryArray[1].ISBN << libraryArray[2].ISBN; cout << libraryArray[0].bookName << libraryArray[1].bookName << libraryArray[2].bookName; }

  13. Passing Array of Structure in Function (Example 1) // define Library type here void Function1 (Library array[ ], int elements ); void main (void) { Library libraryArray[4]; libraryArray[0].ISBN = 1293; libraryArray[1].ISBN = 9382; strcpy (libraryArray[0].bookName, “Network Security”); strcpy (libraryArray[1].bookName, “Data Mining”); Function1 (libraryArray,4); } void Function1 (Library array[ ], int elements) { cout << array[0].ISBN << “ “ << array[1].ISBN; cout << array[0].bookName << “ “ << array[1].bookName; }

  14. Dynamic Memory Allocation (DMA) of Structure Type Variables • We can also dynamic allocate the memory of any structure type variable using malloc (), realloc () functions. For example. • Library *PtrToLibrary; • PtrToLibrary = (Library *) malloc (96*10); • The above code will allocate 10 elements of Library type at execution time. • Very similar to • float *PtrTofloat; • PtrTofloat = (float *) malloc (10*4); • We can delete memory allocated at execution time using free function • free (PtrToLibrary);

  15. Dynamic Memory Allocation (DMA) of Structure Type Variables (Example 1) void main (void) { Library *DMA; int size = sizeof (Library) * 4; DMA = (Library *) malloc ( size ); DMA[0].ISBN = 1293; strcpy (DMA[0].bookName, “Network Security”); DMA[1].ISBN = 9832; strcpy (DMA[1].bookName, “C Programming”); cout << DMA[0].ISBN << DMA[0].bookName; cout << “\n”; cout << DMA[1].ISBN << DMA[1].bookName; }

  16. Homework = 01 • Develop a C program that ask the user to enter the climate information of any city. • Once the user has entered the climate information store it in the climate type structure. • Remember: Use the realloc( ) function to create a dynamic type structure array. • The program should be end when the user presses ‘Esc’ button. • Deadline:

  17. Homework = 01 • Output: Do you want to enter next record (Y/N): Enter the city name: Islamabad Enter the max temperature = 32 Enter the min temperature = 16 Enter the humidity factor = 75 Enter the wind pressure = 45 Enter the wind direction = south Enter the perception factor = 35 Enter the rain value (in mm) = 8 Do you want to enter next record (Y/N):

More Related