New C references added

master
Aney 5 years ago
parent 4e3faca5cf
commit 2482161d49

@ -0,0 +1,8 @@
# Conversion
# Casting
(int) sizeof(x)
Casts the value of sizeof(x) to an integer

@ -0,0 +1,34 @@
# Memory
int i = 121313;
Tells the computer to put aside some memory for i, as an integer.
This is stored at a certain memory address.
%i;
printf("0x%p\n", &i);
The value will then be stored in that memory and can be referenced with the variable name, or with a pointer.
# Pointers
Pointer's can reference a memory address, this is like a varialbe that stores a memory address;
int * p = &i;
int * p = 0;
Pointers set to 0 have no memory address, but should be declared as such instead of with no initialisation, as no init could cause bugs and other issues.
# Derefferenced Pointers
Pointers can also be dereffernced to get the value being pointed to, istead of the memory address itself.
int j = *p;
j is a referrence of p's memory address, the actual value of the varialbe it's pointed to.
*p = 34234;
The derefferenced value of p can be altered, while keeping the same memory address through derefferencing.

@ -0,0 +1,15 @@
# Array
Arrays can be any data type, including self-defined structs
int numbers[] = { 100, 200. 55. 91 };
Has storage amount equal to the amount of elements/values.
int numbers[3];
Has a storage amount of 3 elements.
numbers[0]
Gets the first element stored in the array. As arrays start at 0, so the 2nd element will be `numbers[1]`

@ -0,0 +1,47 @@
# Variables
Declare then use variables
<type> <name> (optional initialiser) e.g. `int hens = 5`
Variables should be declared seperately.
If variables aren't initialised it'll try to get some value from the stack, causing massive unprodictibiliy. Always initialse.
## Types
These types store a certain amount of data, in bits.
- int
- float
- double
- char
- unsigned
- short
- long
## Signed and Unsigned
integers are signed by default, allowing negatives and positives.
Unsigned ints, etc. have all their bits for positive values.
## Local Variables
These are only usable and accessible withing the scope of the current function
## Static Varialbles
Static variables retain their value within the function, regardless of how many function calls.
static int hens;
Static variables default their initialisation to 0. And are not re-initialised upon function calls. These variables retain their value until the program is restarted, etc.
### Sharing static varialbes
By declaring the static variable within the source code, not inside of a function it can be used by many functions.
Global?

@ -0,0 +1,43 @@
# Structures
A collection of variables that create a new type, like classes/objects, but pure data.
Keep related variables and values together.
typedef struct Pixel{
float X;
float Y;
}
Declared as any other variable type
Pixel p;
With initialisation
Pixel p = {10.0f, 25.0f};
If typedef not before the original struct, it'll need to be added. Structs are in a different namespace.
struct Pixel p;
You can assign and access members of the declared structs using a .
float x_value = p.X;
p.Y = 66.0f;
## Layout and Padding
C and C++ compilers require values in structs to be in order of sizeof, so shorts before ints, etc.
If this isn't the case the struct will take up more memory that needed. eg.
short x; // 2 bytes, with 2 bytes of padding
int y; // 4 bytes, no padding
short z; // 2 bytes, 2 bytes of padding
// total 12 bytes
short x; // 2 bytes
short z; // 2 bytes
int y; // 4 bytes
// total 8 bytes

@ -0,0 +1,17 @@
# Unions
Probably won't be used much, eh.
Like a structure, but all members share the same (starting) memory address
typedef union testUnion{
int Int;
float Real;
}
A union is the size of it's biggest member (in bytes)
A union will be one of these types, so either an int or float depending on what it's set as.
This can be useful for APIs, or if a variable could be a number of types. More likely the former.

@ -0,0 +1,11 @@
# Enumerators
Integer values, starting with 0 unless otherwise defined.
typedef enum {
Toby,
Bobby
} Staff;
int staffmember = Toby; // 0

@ -0,0 +1,43 @@
# Conditional Statements
Code that gets executed
# Conditional/Selection Statements
## If Statement
Evaluates a condition and executes different compound statements depending on the evaluation.
if (!condition) statement;
Ideally you want to wrap the code blocked statements in braces
if (condition) {
statement;
}
else{
statement2;
}
You can also add more conditions if the first doesn't match, if the other conditiosn also don't match then the else will execute.
if (condition) {
statment;
}
else if (condition2){
statement2;
}
C doesn't have an elseif, elif, etc. Instead it just performs another if statement after the else clause.
## Switch statement
Select from a number of different values/case depending on the switch value
switch (eggs) {
case 0: printf("no eggs"); break;
case 1: printf("one egg"); break;
default: printf("default value if neither case match switch"); break;
}
In C if the breaks aren't there, it'll execute code from that match. This includes all the cases after the match.

@ -0,0 +1,47 @@
# Loops
Loops, or iteration statements are executed repeatedly until their iteration has completed.
## While
While loops check a condition and execute the statement inside the loop if the condition is evaluated as true.
while (condition) {
statement;
}
To ensure you don't get infinite loops, the evaluation must eventually become false.
while (count < 10) {
printf("%d \n", count);
count += 1;
}
## Do
Do loops, or Do while loops also execute the statement inside the loop.
Unlike the while loop the Do loop will always execute the statment at least once, as it does the evaluation of the condition after the statements.
do {
printf("%d \n", count);
count += 1;
} while (count < 10);
This is useful in case the statement must be run, but could also be iterated after this first execution. Like a normal statement followed by a while loop, but cleaner and more efficient.
## For
Iterates through in a single condition.
Defines the varialbe, sets the condition, and also the increment that should happen if the condition is met.
for (int count = 10; count < 10; count +=1) {
statement;
}
## Break and Continue
Break can break out of statements, and loops
Continue skips over the code, and returns to the loop continuing from the next value.

@ -0,0 +1,16 @@
# Operators
+
-
*
/
()
++x
x+=1
x=x+1
==
!=
!
Loading…
Cancel
Save