summaryrefslogtreecommitdiffhomepage
path: root/c.html.markdown
diff options
context:
space:
mode:
Diffstat (limited to 'c.html.markdown')
-rw-r--r--c.html.markdown32
1 files changed, 17 insertions, 15 deletions
diff --git a/c.html.markdown b/c.html.markdown
index 84856b32..c89f2b88 100644
--- a/c.html.markdown
+++ b/c.html.markdown
@@ -92,7 +92,7 @@ int main() {
printf("%zu\n", sizeof(int)); // => 4 (on most machines with 4-byte words)
- // If the argument of the `sizeof` operator an expression, then its argument
+ // If the argument of the `sizeof` operator is an expression, then its argument
// is not evaluated (except VLAs (see below)).
// The value it yields in this case is a compile-time constant.
int a = 1;
@@ -154,7 +154,7 @@ int main() {
int multi_array[2][5] = {
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 0}
- }
+ };
//access elements:
int array_int = multi_array[0][2]; // => 3
@@ -215,7 +215,7 @@ int main() {
z = (a > b) ? a : b; // => 10 "if a > b return a, else return b."
//Increment and decrement operators:
- char *s = "iLoveC"
+ char *s = "iLoveC";
int j = 0;
s[j++]; // => "i". Returns the j-th item of s THEN increments value of j.
j = 0;
@@ -251,7 +251,7 @@ int main() {
// While loops exist
int ii = 0;
while (ii < 10) { //ANY value not zero is true.
- printf("%d, ", ii++); // ii++ increments ii AFTER using it's current value.
+ printf("%d, ", ii++); // ii++ increments ii AFTER using its current value.
} // => prints "0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "
printf("\n");
@@ -259,7 +259,7 @@ int main() {
int kk = 0;
do {
printf("%d, ", kk);
- } while (++kk < 10); // ++kk increments kk BEFORE using it's current value.
+ } while (++kk < 10); // ++kk increments kk BEFORE using its current value.
// => prints "0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "
printf("\n");
@@ -367,7 +367,7 @@ int main() {
// This works because arrays often decay into pointers to their first element.
// For example, when an array is passed to a function or is assigned to a pointer,
// it decays into (implicitly converted to) a pointer.
- // Exceptions: when the array is the argument of the `&` (address-od) operator:
+ // Exceptions: when the array is the argument of the `&` (address-of) operator:
int arr[10];
int (*ptr_to_arr)[10] = &arr; // &arr is NOT of type `int *`!
// It's of type "pointer to array" (of ten `int`s).
@@ -376,7 +376,7 @@ int main() {
// or when it's the argument of the `sizeof` or `alignof` operator:
int arr[10];
int *ptr = arr; // equivalent with int *ptr = &arr[0];
- printf("%zu %zu\n", sizeof arr, sizeof ptr); // probably prints "40, 4" or "40, 8"
+ printf("%zu, %zu\n", sizeof arr, sizeof ptr); // probably prints "40, 4" or "40, 8"
// Pointers are incremented and decremented based on their type
@@ -387,7 +387,7 @@ int main() {
// You can also dynamically allocate contiguous blocks of memory with the
// standard library function malloc, which takes one argument of type size_t
// representing the number of bytes to allocate (usually from the heap, although this
- // may not be true on e. g. embedded systems - the C standard says nothing about it).
+ // may not be true on e.g. embedded systems - the C standard says nothing about it).
int *my_ptr = malloc(sizeof(*my_ptr) * 20);
for (xx = 0; xx < 20; xx++) {
*(my_ptr + xx) = 20 - xx; // my_ptr[xx] = 20-xx
@@ -405,7 +405,7 @@ int main() {
// Strings are arrays of char, but they are usually represented as a
// pointer-to-char (which is a pointer to the first element of the array).
// It's good practice to use `const char *' when referring to a string literal,
- // since string literals shall not be modified (i. e. "foo"[0] = 'a' is ILLEGAL.)
+ // since string literals shall not be modified (i.e. "foo"[0] = 'a' is ILLEGAL.)
const char *my_str = "This is my very own string literal";
printf("%c\n", *my_str); // => 'T'
@@ -454,6 +454,12 @@ void str_reverse(char *str_in)
}
}
+/*
+char c[] = "This is a test.";
+str_reverse(c);
+printf("%s\n", c); // => ".tset a si sihT"
+*/
+
//if referring to external variables outside function, must use extern keyword.
int i = 0;
void testFunc() {
@@ -467,11 +473,7 @@ void testFunc() {
}
//**You may also declare functions as static to make them private**
-/*
-char c[] = "This is a test.";
-str_reverse(c);
-printf("%s\n", c); // => ".tset a si sihT"
-*/
+
///////////////////////////////////////
// User-defined types and structs
@@ -567,7 +569,7 @@ typedef void (*my_fnp_type)(char *);
'\b' // backspace character
'\0' // null character. Usually put at end of strings in C lang.
// hello\n\0. \0 used by convention to mark end of string.
-'\\' // backspace
+'\\' // backslash
'\?' // question mark
'\'' // single quote
'\"' // double quote