C Programming
C Programming
What is C?
C is a general-purpose programming language created by Dennis Ritchie at the Bell
Laboratories in 1972.
C is strongly associated with UNIX, as it was developed to write the UNIX operating
system.
Why Learn C?
It is one of the most popular programming language in the world
If you know C, you will have no problem learning other popular programming
languages such as Java, Python, C++, C#, etc, as the syntax is similar
C is very fast, compared to other programming languages, like Java and Python
C is very versatile; it can be used in both applications and technologies
1/1
C Syntax
Syntax
You have already seen the following code a couple of times in the first chapters. Let's break
it down to understand it better:
Example
#include <stdio.h>
int main() {
printf("Hello World!");
return 0;
}
Example explained
Line 1: #include <stdio.h> is a header file library that lets us work with input and
output functions, such as printf() (used in line 4). Header files add functionality to C
programs.
Don't worry if you don't understand how #include <stdio.h> works. Just think of it as
something that (almost) always appears in your program.
Line 2: A blank line. C ignores white space. But we use it to make the code more readable.
Line 3: Another thing that always appear in a C program, is main() . This is called a
function. Any code inside its curly brackets {} will be executed.
Line 4: printf() is a function used to output/print text to the screen. In our example it will
output "Hello World".
Note: The body of int main() could also been written as:
int main(){printf("Hello World!");return 0;}
Remember: The compiler ignores white spaces. However, multiple lines makes the code
more readable.
1/2
Line 6: Do not forget to add the closing curly bracket } to actually end the main function.
2/2
C Output (Print Text)
Example
#include <stdio.h>
int main() {
printf("Hello World!");
return 0;
}
You can use as many printf() functions as you want. However, note that it does not
insert a new line at the end of the output:
Example
#include <stdio.h>
int main() {
printf("Hello World!");
printf("I am learning C.");
return 0;
}
1/1
C New Lines
New Lines
To insert a new line, you can use the \n character:
Example
#include <stdio.h>
int main() {
printf("Hello World!\n");
printf("I am learning C.");
return 0;
}
You can also output multiple lines with a single printf() function. However, be aware that
this will make the code harder to read:
Example
#include <stdio.h>
int main() {
printf("Hello World!\nI am learning C.\nAnd it is awesome!");
return 0;
}
Tip: Two \n characters after each other will create a blank line:
Example
#include <stdio.h>
int main() {
printf("Hello World!\n\n");
printf("I am learning C.");
return 0;
}
What is \n exactly?
The newline character ( \n ) is called an escape sequence, and it forces the cursor to
change its position to the beginning of the next line on the screen. This results in a new line.
1/2
Examples of other valid escape sequences are:
2/2
C Comments
Comments in C
Comments can be used to explain code, and to make it more readable. It can also be used
to prevent execution when testing alternative code.
Single-line Comments
Single-line comments start with two forward slashes ( // ).
Any text between // and the end of the line is ignored by the compiler (will not be
executed).
Example
// This is a comment
printf("Hello World!");
Example
printf("Hello World!"); // This is a comment
C Multi-line Comments
Multi-line comments start with /* and ends with */ .
Example
/* The code below will print the words Hello World!
to the screen, and it is amazing */
printf("Hello World!");
1/2
It is up to you which you want to use. Normally, we use // for short comments, and /*
*/ for longer.
Good to know: Before version C99 (released in 1999), you could only use multi-line
comments in C.
2/2
C Variables
In C, there are different types of variables (defined with different keywords), for example:
int - stores integers (whole numbers), without decimals, such as 123 or -123
float - stores floating point numbers, with decimals, such as 19.99 or -19.99
char - stores single characters, such as 'a' or 'B'. Char values are surrounded by
single quotes
Syntax
type variableName = value;
Where type is one of C types (such as int ), and variableName is the name of the variable
(such as x or myName). The equal sign is used to assign a value to the variable.
So, to create a variable that should store a number, look at the following example:
Example
Create a variable called myNum of type int and assign the value 15 to it:
You can also declare a variable without assigning the value, and assign the value later:
Example
int myNum;
myNum = 15;
Note: If you assign a new value to an existing variable, it will overwrite the previous value:
Example
int myNum = 15; // myNum is 15
myNum = 10; // Now myNum is 10
1/4
Output Variables
You learned from the output chapter that you can output values/print text with the printf()
function:
Example
printf("Hello World!");
In many other programming languages (like Python, Java, and C++), you would normally use
a print function to display the value of a variable. However, this is not possible in C:
Example
int myNum = 15;
printf(myNum); // Nothing happens
To output variables in C, you must get familiar with something called "format specifiers".
Format Specifiers
Format specifiers are used together with the printf() function to tell the compiler what
type of data the variable is storing. It is basically a placeholder for the variable value.
For example, to output the value of an int variable, you must use the format specifier %d
or %i surrounded by double quotes, inside the printf() function:
Example
int myNum = 15;
printf("%d", myNum); // Outputs 15
Example
// Create variables
int myNum = 5; // Integer (whole number)
float myFloatNum = 5.99; // Floating point number
char myLetter = 'D'; // Character
// Print variables
printf("%d\n", myNum);
2/4
printf("%f\n", myFloatNum);
printf("%c\n", myLetter);
To combine both text and a variable, separate them with a comma inside the printf()
function:
Example
int myNum = 5;
printf("My favorite number is: %d", myNum);
To print different types in a single printf() function, you can use the following:
Example
int myNum = 5;
char myLetter = 'D';
printf("My number is %d and my letter is %c", myNum, myLetter);
You will learn more about Data Types in the next chapter.
Example
int x = 5;
int y = 6;
int sum = x + y;
printf("%d", sum);
Example
int x = 5, y = 6, z = 50;
printf("%d", x + y + z);
You can also assign the same value to multiple variables of the same type:
Example
3/4
int x, y, z;
x = y = z = 50;
printf("%d", x + y + z);
C Variable Names
All C variables must be identified with unique names.
Identifiers can be short names (like x and y) or more descriptive names (age, sum,
totalVolume).
Example
// Good
int minutesPerHour = 60;
4/4
C Data Types
Data Types
As explained in the Variables chapter, a variable in C must be a specified data type, and you
must use a format specifier inside the printf() function to display it:
Example
// Create variables
int myNum = 5; // Integer (whole number)
float myFloatNum = 5.99; // Floating point number
char myLetter = 'D'; // Character
// Print variables
printf("%d\n", myNum);
printf("%f\n", myFloatNum);
printf("%c\n", myLetter);
Data
Type Size Description
1/2
There are different format specifiers for each data type. Here are some of them:
Format
Specifier Data Type Try it
%d or %i int Try it
»
%f float Try it
»
%c char Try it
»
%s Used for strings (text), which you will learn more about in a Try it
later chapter »
C Exercises
Exercise:
Add the correct data type for the following variables:
myNum = 5;
myFloatNum = 5.99;
myLetter = 'D';
2/2
C Constants
Constants
If you don't want others (or yourself) to override existing variable values, use the const
keyword (this will declare the variable as "constant", which means unchangeable and read-
only):
Example
const int myNum = 15; // myNum will always be 15
myNum = 10; // error: assignment of read-only variable 'myNum'
You should always declare the variable as constant when you have values that are unlikely
to change:
Example
const int minutesPerHour = 60;
const float PI = 3.14;
Notes On Constants
When you declare a constant variable, it must be assigned with a value:
Example
Like this:
Good Practice
Another thing about constant variables, is that it is considered good practice to declare them
with uppercase. It is not required, but useful for code readability and common for C
programmers:
1/2
Example
const int BIRTHYEAR = 1980;
2/2
C Operators
Operators
Operators are used to perform operations on variables and values.
In the example below, we use the + operator to add together two values:
Example
int myNum = 100 + 50;
Although the + operator is often used to add together two values, like in the example
above, it can also be used to add together a variable and a value, or a variable and another
variable:
Example
int sum1 = 100 + 50; // 150 (100 + 50)
int sum2 = sum1 + 250; // 400 (150 + 250)
int sum3 = sum2 + sum2; // 800 (400 + 400)
Arithmetic operators
Assignment operators
Comparison operators
Logical operators
Bitwise operators
Arithmetic Operators
Arithmetic operators are used to perform common mathematical operations.
1/4
% Modulus Returns the division remainder x%y Try it »
Assignment Operators
Assignment operators are used to assign values to variables.
In the example below, we use the assignment operator ( = ) to assign the value 10 to a
variable called x:
Example
int x = 10;
Example
int x = 10;
x += 5;
Try it Yourself »
A list of all assignment operators:
+= x += 3 x=x+3 Try it »
-= x -= 3 x=x-3 Try it »
*= x *= 3 x=x*3 Try it »
/= x /= 3 x=x/3 Try it »
%= x %= 3 x=x%3 Try it »
|= x |= 3 x=x|3 Try it »
^= x ^= 3 x=x^3 Try it »
2/4
>>= x >>= 3 x = x >> 3 Try it »
Comparison Operators
Comparison operators are used to compare two values (or variables). This is important in
programming, because it helps us to find answers and make decisions.
In the following example, we use the greater than operator ( > ) to find out if 5 is greater
than 3:
Example
int x = 5;
int y = 3;
printf("%d", x > y); // returns 1 (true) because 5 is greater than 3
== Equal to x == y Try it »
Logical Operators
You can also test for true or false values with logical operators.
Logical operators are used to determine the logic between variables or values:
3/4
Operator Name Description Example Try it
&& Logical Returns true if both statements are true x < 5 && x < Try it
and 10 »
! Logical Reverse the result, returns false if the !(x < 5 && x < Try it
not result is true 10) »
Sizeof Operator
The memory size (in bytes) of a data type or a variable can be found with the sizeof
operator:
Example
int myInt;
float myFloat;
double myDouble;
char myChar;
printf("%lu\n", sizeof(myInt));
printf("%lu\n", sizeof(myFloat));
printf("%lu\n", sizeof(myDouble));
printf("%lu\n", sizeof(myChar));
Note that we use the %lu format specifer to print the result, instead of %d . It is because
the compiler expects the sizeof operator to return a long unsigned int ( %lu ), instead of
int ( %d ). On some computers it might work with %d , but it is safer to use %lu .
4/4
C Booleans
Booleans
Very often, in programming, you will need a data type that can only have one of two values,
like:
YES / NO
ON / OFF
TRUE / FALSE
Boolean Variables
In C, the bool type is not a built-in data type, like int or char .
It was introduced in C99, and you must import the following header file to use it:
#include <stdbool.h>
A boolean variable is declared with the bool keyword and can only take the values true
or false :
Before trying to print the boolean variables, you should know that boolean values are
returned as integers:
Therefore, you must use the %d format specifier to print a boolean value:
Example
1/3
// Return boolean values
printf("%d", isProgrammingFun); // Returns 1 (true)
printf("%d", isFishTasty); // Returns 0 (false)
Try it Yourself »
However, it is more common to return a boolean value by comparing values and variables.
For example, you can use a comparison operator, such as the greater than ( > ) operator, to
compare two values:
Example
printf("%d", 10 > 9); // Returns 1 (true) because 10 is greater than 9
From the example above, you can see that the return value is a boolean value.
Example
int x = 10;
int y = 9;
printf("%d", x > y);
In the example below, we use the equal to ( == ) operator to compare different values:
Example
printf("%d", 10 == 10); // Returns 1 (true), because 10 is equal to 10
printf("%d", 10 == 15); // Returns 0 (false), because 10 is not equal to 15
printf("%d", 5.5 == 55); // Returns 0 (false) because 5.5 is not equal to 55
printf("%d", 3.8 == 3.8); // Returns 1 (true) because 3.8 is equal to 3.8
You are not limited to only compare numbers. You can also compare boolean variables, or
even special structures, like arrays (which you will learn more about in a later chapter):
Example
2/3
// Find out if both hamburger and pizza is tasty
printf("%d", isHamburgerTasty == isPizzaTasty);
Remember to include the <stdbool.h> header file when working with bool variables.
In the example below, we use the >= comparison operator to find out if the age ( 25 ) is
greater than OR equal to the voting age limit, which is set to 18 :
Example
printf("%d", myAge >= votingAge); // Returns 1 (true), meaning 25 year olds are allowed to
vote!
Cool, right? An even better approach (since we are on a roll now), would be to wrap the code
above in an if...else statement, so we can perform different actions depending on the
result:
Example
Output "Old enough to vote!" if myAge is greater than or equal to 18 . Otherwise output
"Not old enough to vote.":
You will learn more about conditions (if...else) in the next chapter.
3/3
C If ... Else
You can use these conditions to perform different actions for different decisions.
The if Statement
Use the if statement to specify a block of code to be executed if a condition is true .
Syntax
if (condition) {
// block of code to be executed if the condition is true
}
Note that if is in lowercase letters. Uppercase letters (If or IF) will generate an error.
In the example below, we test two values to find out if 20 is greater than 18. If the condition is
true , print some text:
Example
if (20 > 18) {
printf("20 is greater than 18");
}
1/4
We can also test variables:
Example
int x = 20;
int y = 18;
if (x > y) {
printf("x is greater than y");
}
Example explained
In the example above we use two variables, x and y, to test whether x is greater than y
(using the > operator). As x is 20, and y is 18, and we know that 20 is greater than 18, we
print to the screen that "x is greater than y".
Syntax
if (condition) {
// block of code to be executed if the condition is true
} else {
// block of code to be executed if the condition is false
}
Example
int time = 20;
if (time < 18) {
printf("Good day.");
} else {
printf("Good evening.");
}
// Outputs "Good evening."
Example explained
In the example above, time (20) is greater than 18, so the condition is false . Because of
this, we move on to the else condition and print to the screen "Good evening". If the time
was less than 18, the program would print "Good day".
2/4
The else if Statement
Use the else if statement to specify a new condition if the first condition is false .
Syntax
if (condition1) {
// block of code to be executed if condition1 is true
} else if (condition2) {
// block of code to be executed if the condition1 is false and condition2 is true
} else {
// block of code to be executed if the condition1 is false and condition2 is false
}
Example
int time = 22;
if (time < 10) {
printf("Good morning.");
} else if (time < 20) {
printf("Good day.");
} else {
printf("Good evening.");
}
// Outputs "Good evening."
Example explained
In the example above, time (22) is greater than 10, so the first condition is false . The
next condition, in the else if statement, is also false , so we move on to the else
condition since condition1 and condition2 is both false - and print to the screen "Good
evening".
However, if the time was 14, our program would print "Good day."
Another Example
This example shows how you can use if..else to find out if a number is positive or
negative:
Example
3/4
int myNum = 10; // Is this a positive or negative number?
if (myNum > 0)
printf("The value is a positive number.");
else if (myNum < 0)
printf("The value is a negative number.");
else
printf("The value is 0.");
C Exercises
Exercise:
Print "Hello World" if x is greater than y .
int x = 50;
int y = 10;
(x y) {
printf("Hello World");
}
4/4
Short Hand If...Else (Ternary Operator)
There is also a short-hand if else, which is known as the ternary operator because it
consists of three operands. It can be used to replace multiple lines of code with a single line.
It is often used to replace simple if else statements:
Syntax
variable = (condition) ? expressionTrue : expressionFalse;
Instead of writing:
Example
int time = 20;
if (time < 18) {
printf("Good day.");
} else {
printf("Good evening.");
}
Example
int time = 20;
(time < 18) ? printf("Good day.") : printf("Good evening.");
It is completely up to you if you want to use the traditional if...else statement or the ternary
operator.
1/1
C Switch
Switch Statement
Instead of writing many if..else statements, you can use the switch statement.
Syntax
switch(expression) {
case x:
// code block
break;
case y:
// code block
break;
default:
// code block
}
The example below uses the weekday number to calculate the weekday name:
Example
int day = 4;
switch (day) {
case 1:
printf("Monday");
break;
case 2:
1/3
printf("Tuesday");
break;
case 3:
printf("Wednesday");
break;
case 4:
printf("Thursday");
break;
case 5:
printf("Friday");
break;
case 6:
printf("Saturday");
break;
case 7:
printf("Sunday");
break;
}
This will stop the execution of more code and case testing inside the block.
When a match is found, and the job is done, it's time for a break. There is no need for more
testing.
A break can save a lot of execution time because it "ignores" the execution of all the rest of
the code in the switch block.
Example
int day = 4;
2/3
switch (day) {
case 6:
printf("Today is Saturday");
break;
case 7:
printf("Today is Sunday");
break;
default:
printf("Looking forward to the Weekend");
}
C Exercises
Exercise:
Insert the missing parts to complete the following switch statement:
int day = 2;
switch () {
1:
printf("Monday");
;
2:
printf("Sunday");
;
}
3/3
C While Loop
Loops
Loops can execute a block of code as long as a specified condition is reached.
Loops are handy because they save time, reduce errors, and they make code more
readable.
While Loop
The while loop loops through a block of code as long as a specified condition is true :
Syntax
while (condition) {
// code block to be executed
}
In the example below, the code in the loop will run, over and over again, as long as a
variable ( i ) is less than 5:
Example
int i = 0;
while (i < 5) {
printf("%d\n", i);
i++;
}
Note: Do not forget to increase the variable used in the condition ( i++ ), otherwise the loop
will never end!
Syntax
1/2
do {
// code block to be executed
}
while (condition);
The example below uses a do/while loop. The loop will always be executed at least once,
even if the condition is false, because the code block is executed before the condition is
tested:
Example
int i = 0;
do {
printf("%d\n", i);
i++;
}
while (i < 5);
Do not forget to increase the variable used in the condition, otherwise the loop will never
end!
2/2
C For Loop
For Loop
When you know exactly how many times you want to loop through a block of code, use the
for loop instead of a while loop:
Syntax
for (statement 1; statement 2; statement 3) {
// code block to be executed
}
Statement 1 is executed (one time) before the execution of the code block.
Statement 3 is executed (every time) after the code block has been executed.
Example
int i;
Example explained
Statement 2 defines the condition for the loop to run (i must be less than 5). If the condition is
true, the loop will start over again, if it is false, the loop will end.
Statement 3 increases a value (i++) each time the code block in the loop has been executed.
Another Example
This example will only print even values between 0 and 10:
Example
1/2
for (i = 0; i <= 10; i = i + 2) {
printf("%d\n", i);
}
Nested Loops
It is also possible to place a loop inside another loop. This is called a nested loop.
The "inner loop" will be executed one time for each iteration of the "outer loop":
Example
int i, j;
// Outer loop
for (i = 1; i <= 2; ++i) {
printf("Outer: %d\n", i); // Executes 2 times
// Inner loop
for (j = 1; j <= 3; ++j) {
printf(" Inner: %d\n", j); // Executes 6 times (2 * 3)
}
}
Exercise:
Use a for loop to print "Yes" 5 times:
2/2
C Break and Continue
Break
You have already seen the break statement used in an earlier chapter of this tutorial. It
was used to "jump out" of a switch statement.
Example
int i;
Continue
The continue statement breaks one iteration (in the loop), if a specified condition occurs,
and continues with the next iteration in the loop.
Example
int i;
1/3
Break and Continue in While Loop
You can also use break and continue in while loops:
Break Example
int i = 0;
Continue Example
int i = 0;
C Exercises
Exercise:
Stop the loop if i is 5.
2/3
Start the Exercise
3/3
C Arrays
Arrays
Arrays are used to store multiple values in a single variable, instead of declaring separate
variables for each value.
To create an array, define the data type (like int ) and specify the name of the array
followed by square brackets [].
Array indexes start with 0: [0] is the first element. [1] is the second element, etc.
This statement accesses the value of the first element [0] in myNumbers :
Example
// Outputs 25
Example
myNumbers[0] = 33;
Example
1/3
int myNumbers[] = {25, 50, 75, 100};
myNumbers[0] = 33;
printf("%d", myNumbers[0]);
Example
Example
// Add elements
myNumbers[0] = 25;
myNumbers[1] = 50;
myNumbers[2] = 75;
myNumbers[3] = 100;
Using this method, you should know the size of the array, in order for the program to store
enough memory.
You are not able to change the size of the array after creation.
2/3
C Exercises
Exercise:
Create an array of type int called myNumbers .
3/3
C Multidimensional Arrays
Multidimensional Arrays
In the previous chapter, you learned about arrays, which is also known as single dimension
arrays. These are great, and something you will use a lot while programming in C. However,
if you want to store data as a tabular form, like a table with rows and columns, you need to
get familiar with multidimensional arrays.
Arrays can have any number of dimensions. In this chapter, we will introduce the most
common; two-dimensional arrays (2D).
Two-Dimensional Arrays
A 2D array is also known as a matrix (a table of rows and columns).
The first dimension represents the number of rows [2], while the second dimension
represents the number of columns [3]. The values are placed in row-order, and can be
visualized like this:
This statement accesses the value of the element in the first row (0) and third column (2)
of the matrix array.
1/3
Example
The following example will change the value of the element in the first row (0) and first
column (0):
Example
Example
int i, j;
for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++) {
printf("%d\n", matrix[i][j]);
}
}
2/3
3/3
C Strings
Strings
Strings are used for storing text/characters.
Unlike many other programming languages, C does not have a String type to easily create
string variables. Instead, you must use the char type and create an array of characters to
make a string in C:
To output the string, you can use the printf() function together with the format specifier
%s to tell C that we are now working with strings:
Example
char greetings[] = "Hello World!";
printf("%s", greetings);
Access Strings
Since strings are actually arrays in C, you can access a string by referring to its index
number inside square brackets [] .
Example
char greetings[] = "Hello World!";
printf("%c", greetings[0]);
Note that we have to use the %c format specifier to print a single character.
Modify Strings
1/3
To change the value of a specific character in a string, refer to the index number, and use
single quotes:
Example
char greetings[] = "Hello World!";
greetings[0] = 'J';
printf("%s", greetings);
// Outputs Jello World! instead of Hello World!
Example
You should also note that you can create a string with a set of characters. This example will
produce the same result as the example in the beginning of this page:
Example
char greetings[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0'};
printf("%s", greetings);
Why do we include the \0 character at the end? This is known as the "null terminating
character", and must be included when creating strings using this method. It tells C that this
is the end of the string.
Differences
2/3
The difference between the two ways of creating strings, is that the first method is easier to
write, and you do not have to include the \0 character, as C will do it for you.
You should note that the size of both arrays is the same: They both have 13 characters
(space also counts as a character by the way), including the \0 character:
Example
char greetings[] = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0'};
char greetings2[] = "Hello World!";
3/3
Strings - Special Characters
C Special Characters
Because strings must be written within quotes, C will misunderstand this string, and generate
an error:
char txt[] = "We are the so-called "Vikings" from the north.";
The solution to avoid this problem, is to use the backslash escape character.
The backslash ( \ ) escape character turns special characters into string characters:
\\ \ Backslash
Example
char txt[] = "We are the so-called \"Vikings\" from the north.";
Example
Example
char txt[] = "The character \\ is called backslash.";
1/2
\t Tab Try it »
\0 Null Try it »
2/2
C String Functions
String Functions
C also has many useful string functions, which can be used to perform certain operations on
strings.
To use them, you must include the <string.h> header file in your program:
#include <string.h>
String Length
For example, to get the length of a string, you can use the strlen() function:
Example
char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
printf("%d", strlen(alphabet));
In the previous chapter, we used sizeof to get the size of a string/array. Note that
sizeof and strlen behaves differently, as sizeof also includes the \0 character
when counting:
Example
char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
printf("%d", strlen(alphabet)); // 26
printf("%d", sizeof(alphabet)); // 27
It is also important that you know that sizeof will always return the memory size (in bytes),
and not the actual string length:
Example
char alphabet[50] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
printf("%d", strlen(alphabet)); // 26
printf("%d", sizeof(alphabet)); // 50
Concatenate Strings
1/3
To concatenate (combine) two strings, you can use the strcat() function:
Example
// Print str1
printf("%s", str1);
Note that the size of str1 should be large enough to store the result of the two strings
combined (20 in our example).
Copy Strings
To copy the value of one string to another, you can use the strcpy() function:
Example
// Print str2
printf("%s", str2);
Note that the size of str2 should be large enough to store the copied string (20 in our
example).
Compare Strings
To compare two strings, you can use the strcmp() function.
It returns 0 if the two strings are equal, otherwise a value that is not 0:
Example
2/3
char str1[] = "Hello";
char str2[] = "Hello";
char str3[] = "Hi";
3/3
C User Input
User Input
You have already learned that printf() is used to output values in C.
Example
Output a number entered by the user:
// Create an integer variable that will store the number we get from the user
int myNum;
Tip: You will learn more about memory addresses and functions in the next chapter.
Multiple Inputs
The scanf() function also allow multiple inputs:
Example
1/3
// Ask the user to type a number AND a character
printf("Type a number AND a character and press enter: \n");
// Get and save the number AND character the user types
scanf("%d %c", &myNum, &myChar);
Example
// Create a string
char firstName[30];
However, the scanf() function has some limitations: it considers space (whitespace, tabs,
etc) as a terminating character, which means that it can only display a single word (even if
you type many words). For example:
Example
char fullName[30];
2/3
printf("Type your full name: \n");
scanf("%s", &fullName);
That's why, when working with strings, we often use the fgets() function to read a line of
text. Note that you must include the following arguments: the name of the string variable,
sizeof (string_name), and stdin :
Example
char fullName[30];
3/3
C Memory Address
Memory Address
When a variable is created in C, a memory address is assigned to the variable.
The memory address is the location of where the variable is stored on the computer.
To access it, use the reference operator ( & ), and the result will represent where the variable
is stored:
Example
Note: The memory address is in hexadecimal form (0x..). You probably won't get the same
result in your program.
You should also note that &myAge is often called a "pointer". A pointer basically stores the
memory address of a variable as its value. To print pointer values, we use the %p format
specifier.
You will learn much more about pointers in the next chapter.
Pointers are important in C, because they give you the ability to manipulate the data in the
computer's memory - this can reduce the code and improve the performance.
Pointers are one of the things that make C stand out from other programming languages, like
Python and Java.
1/1
C Pointers
Creating Pointers
You learned from the previous chapter, that we can get the memory address of a variable
with the reference operator & :
Example
A pointer is a variable that stores the memory address of another variable as its value.
A pointer variable points to a data type (like int ) of the same type, and is created with
the * operator. The address of the variable you are working with is assigned to the pointer:
Example
Example explained
Create a pointer variable with the name ptr , that points to an int variable ( myAge ).
Note that the type of the pointer has to match the type of the variable you're working with.
1/3
Use the & operator to store the memory address of the myAge variable, and assign it to
the pointer.
Dereference
In the example above, we used the pointer variable to get the memory address of a variable
(used together with the & reference operator).
However, you can also get the value of the variable the pointer points to, by using the *
operator (the dereference operator):
Example
// Reference: Output the memory address of myAge with the pointer (0x7ffe5367e044)
printf("%p\n", ptr);
Good To Know: There are three ways to declare pointer variables, but the first way is mostly
used:
Pointers are one of the things that make C stand out from other programming languages, like
Python and Java.
This chapter was just a short introduction to Pointers. They are important in C, because they
give you the ability to manipulate the data in the computer's memory - this can reduce the
code and improve the performance. However, pointers must be handled with care, since it is
2/3
possible to damage data stored in other memory addresses.
3/3