diff --git a/content/notes/11-struct-and-union.md b/content/notes/11-struct-and-union.md new file mode 100644 index 000000000..3d375a08a --- /dev/null +++ b/content/notes/11-struct-and-union.md @@ -0,0 +1,69 @@ +--- +title: "11-struct-and-union" +aliases: +tags: +- cosc204 +--- + +# Struct +not a calss +- class like *composite data type* called struct +- POD plain old data + +## declare +``` +struct { + ; + ; +} ; + +struct point_2d { + double x; + double y; +} point; +``` + +typically an anonymous struct is declared and then given a name with typedef + +``` +typedef struct { + double x; + double y; +} point_2d; +``` + +This is the common convention now. + +## initalize +``` +point_2d location = {0.0, 1.0}; //initalizers +point_2d location = {.y = 1.0, .x = 0.0}; //designated initalizers +``` + +## accessing +use the `.` + +``` +point_2d location; + +location.x = 0; +location.y = 1; +``` + +## shallow copy +copy the members including pointers +- but not the things the pointers point to + +![shallow copy example 1](https://i.imgur.com/w3B3ce0.png) +![shallow copy example 2](https://i.imgur.com/mL5QION.png) + + both point to the same memory location. +when you change one - they both change. + +## passing to routines +passed by value + +``` +void print(thing object) +``` + diff --git a/content/notes/cosc-204.md b/content/notes/cosc-204.md index 90b855663..396af32f7 100644 --- a/content/notes/cosc-204.md +++ b/content/notes/cosc-204.md @@ -38,7 +38,7 @@ tags: - [06-6809-programming](notes/06-6809-programming.md) - [07-6809-advanced](notes/07-6809-advanced.md) - [08-intro-to-c](notes/08-intro-to-c.md) - +- # Archive # Info