Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
c [2020/05/29 01:51] paul [C and C++] |
c [2020/10/23 02:53] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== C and C++ ====== | ====== C and C++ ====== | ||
- | ====C++ Interview questions==== | + | ===== C declerations ===== |
+ | |||
+ | A c decleration can be read by following this rule and knowing about precedence. | ||
+ | |||
+ | Go left when you can and right when you must. | ||
+ | |||
+ | < | ||
+ | char *(*(**foo [][8])())[]; | ||
+ | </ | ||
+ | |||
+ | foo is an array to an array of 8 pointers to poiners to a function that returns | ||
+ | a pointer to an array of pointers to char | ||
+ | |||
+ | ===== C++ Interview questions | ||
I was given a pop quiz by a non-tech interviewer once on c++. Here was his questions: | I was given a pop quiz by a non-tech interviewer once on c++. Here was his questions: | ||
Line 11: | Line 24: | ||
- When using a new keyword where is the memory stored, stack or heap? Heap OBVI. | - When using a new keyword where is the memory stored, stack or heap? Heap OBVI. | ||
- If a program crashes and you have a core dump and debugger, what is the first thing you do? | - If a program crashes and you have a core dump and debugger, what is the first thing you do? | ||
- | - Look at a backtrace, see where the program crashed, look at what the variable were. | + | - Look at a backtrace, see where the program crashed, look at what the variable were. |
===== General C++ ===== | ===== General C++ ===== | ||
Line 91: | Line 104: | ||
This way you can use a macro expansion in a if else statement with no curly braces | This way you can use a macro expansion in a if else statement with no curly braces | ||
where more than one statement would mess stuff up. | where more than one statement would mess stuff up. | ||
+ | |||
+ | ===== C Declerations ===== | ||
+ | |||
+ | First, understand the breakdown of a decleration in c. | ||
===== Rule of Three ===== | ===== Rule of Three ===== | ||
Line 135: | Line 152: | ||
An '' | An '' | ||
- | < | + | < |
// pair::pair example | // pair::pair example | ||
#include < | #include < | ||
Line 185: | Line 202: | ||
function. | function. | ||
- | < | + | < |
std:: | std:: | ||
myMap.insert(std:: | myMap.insert(std:: | ||
Line 191: | Line 208: | ||
===== Memory Leaks ===== | ===== Memory Leaks ===== | ||
+ | |||
For every new there must be a delete. Use the following valgrind command to | For every new there must be a delete. Use the following valgrind command to | ||
Line 224: | Line 242: | ||
Example: | Example: | ||
- | < | + | < |
int array[5] = { 1, 2, 3, 4, 5 }; | int array[5] = { 1, 2, 3, 4, 5 }; | ||
for (int& x : array) | for (int& x : array) | ||
x *= 2; | x *= 2; | ||
</ | </ | ||
+ | |||
===== Debugging ===== | ===== Debugging ===== | ||
Line 291: | Line 310: | ||
ret | ret | ||
</ | </ | ||
+ | |||
+ | ==== Pointer Syntax ==== | ||
+ | |||
+ | |||
+ | <code cpp> | ||
+ | |||
+ | Does not declare 3 pointers - it is one pointer and 2 objects. | ||
+ | |||
+ | <code cpp> | ||
+ | sf::Sprite* unfortunately does not apply to all the variables declared following it, just the first. It is equivalent to | ||
+ | |||
+ | sf::Sprite* re_sprite_hair; | ||
+ | sf::Sprite re_sprite_body; | ||
+ | sf::Sprite re_sprite_eyes; | ||
+ | </ | ||
+ | |||
+ | You want to do: | ||
+ | |||
+ | <code cpp> | ||
+ | sf::Sprite *re_sprite_hair, | ||
+ | </ | ||
+ | |||
+ | ===== Smart Pointers ===== | ||
+ | |||
+ | The STL library provides three types of "smart pointers", | ||
+ | |||