vault backup: 2022-09-05 09:34:46

This commit is contained in:
Jet Hughes 2022-09-05 09:34:46 +12:00
parent 3bba1a1eae
commit 30bda965a8
2 changed files with 70 additions and 1 deletions

View File

@ -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 <name>{
<type><name>;
<type><name>;
} <variable>;
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)
```

View File

@ -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