c-in-21-days
Learnings from the book "Sams teach yoursels C in 21 days"
Days | Topics |
---|---|
Day 1 | Getting Started |
Day 2 | Components of C Program |
Day 3 | Variables and Constants |
Day 4 | Statements,Operators,Expressions |
Day 5 | Function |
Day 6 | Arrays, Program control(for, while, do...while) |
Day 7 | Display - printf |
Day 8 | Numeric Arrays |
Day 9 | Pointers |
Day 10 | Characters, Strings |
Day 11 | Structures,Unions, Typedefs |
Day 12 | Variable Scopes |
Day 13 | Advanced Program control(break,continue,switch,exit()) |
Day 14 | Input and Output |
Day 15 | Pointers-advanced |
Day 16 | Using Disc files |
Day 17 | Manipulating strings |
Day 18 | Functions-advanced |
Day 19 | C function Library |
Day 20 | Working with memory |
Day 21 | Advanced compiler use |
Getting Started
Compiling a program using GCC compiler
gcc helloworld.c
First Program
#include<stdio.h>
int main(void)
{
printf("Hello, World!\n"):
return 0;
}
Components of C Program
Consider the following Program
1: /* Program to calculate the product of two numbers. */
2: #include <stdio.h>
3:
4: int val1, val2, val3;
5:
6: int product(int x, int y);
7:
8: int main( void )
9: {
10: /* Get the first number */
11: printf(“Enter a number between 1 and 100: “);
12: scanf(“%d”, &val1);
13:
14: /* Get the second number */
15: printf(“Enter another number between 1 and 100: “);
16: scanf(“%d”, &val2);
17:
18: /* Calculate and display the product */
19: val3 = product(val1, val2);
20: printf (“%d times %d = %d\n”, val1, val2, val3);
21:
22: return 0;
23: }
24:
25: /* Function returns the product of the two values provided */
26: int product(int x, int y)
27: {
28: return (x * y);
29: }
Components:
- main() Function - 8 to 23
- #include directive - 2
- variable definition - 4
- Function Prototype - 6
- Program statements - 11,12,15,16...
- Function Definition - 26 to 29
Variables and Constants
byte is the fundamental unit of computer data storageC'x numeric datatypes
Character | Keyword | Bytes Required | Range |
---|---|---|---|
Character | char | 1 | -128 to 127 |
Short Integer | short | 2 | -32767 to 32767 |
Integer | int | 4 | -2,147,438,647 to 2,147,438,647 |
Long Integer | long | 4 | -2,147,438,647 to 2,147,438,647 |
Long Long Integer | long long | 8 | -9,223,372,036,854,775,807 to 9,223,372,036,854,775,807 |
More on page 45
Typedef and initializing variables
Typedef creates a new name for a existing datatype, can rename int to integer
typedef int integer;
intializing variables
int count;
count = 0;
Statements,Operators,Expressions
Statement
Statement is a complete instruction to carry out a task
x = 2+3; #assignment statement
# compound statement is also called a block
{
printf(“Hello, “);
printf(“world!”);
}
Operators
A symbol that instructs C to perform some operation
x=y # assignment operator
a = 10;
# unary mathematical operators
b = ++a; # increment operator
c = --a; # decrement operator
# relational operators (if and while statements)
if (expression)
{
statement;
}
# logical operators
# AND OR NOT -> Page 81
Expressions
Function
Function is named, is independent, performs a specific task, can return value to the calling program
/* Demonstrates a simple function */
#include <stdio.h>
long cube(long x);
long input, answer;
int main( void )
{
printf(“Enter an integer value: “);
scanf(“%d”, &input);
answer = cube(input);
/* Note: %ld is the conversion specifier for */
/* a long integer */
printf(“\nThe cube of %ld is %ld.\n”, input, answer);
return 0;
}
/* Function: cube() - Calculates the cubed value of a variable */
long cube(long x)
{
long x_cubed;
x_cubed = x * x * x;
return x_cubed;
}
Arrays, Program control(for, while, do...while)
An array is an indexed group of data storage locations
int data[1000];
int index;
index = 100;
data[index] = 12; /* The same as data[100] = 12 */
Program control
for, while, do statements
Display - printf
printf function , used to display data on screen
more examples
Numeric Arrays
- Single Dimensional Arrays
float expenses[100];
int a[10];
/* additional statements go here */
expenses[i] = 100; // i is an integer variable
expenses[2 + 3] = 100; // equivalent to expenses[5]
expenses[a[2]] = 100; // a[] is an integer array
- Multi Dimensional Arrays
For example: two dimensional array
int checker[8][8];
Alternate way of anming and declaring arrays
#define MONTHS 12
int array[MONTHS];
is equivalent to this statement:
int array[12];
const int MONTHS = 12;
int array[MONTHS]; /* Wrong! */
Pointers
Pointer is a variable that contains the address if another variable
Declaring Pointers
typename *ptrname;
char *ch1, *ch2; /* ch1 and ch2 both are pointers to type char */
float *value, percent; /* value is a pointer to type float, and /* percent is an ordinary float variable */
Initializing Pointers
pointer = &variable;
p_rate = &rate; /* assign the address of rate to p_rate */
Using Pointers
printf(“%d”, rate);
or you could write this statement:
printf(“%d”, *p_rate);
Pointer Arithmetic
Characters, Strings
char datatype
Array of characters
char string[10] = { ‘A’, ‘l’, ‘a’, ‘b’, ‘a’, ‘m’, ‘a’, ‘\0’ };
malloc() Function
Memory allocation function in C
Example 1
#include <stdlib.h>
#include <stdio.h>
int main( void )
{
/* allocate memory for a 100-character string */
char *str;
str = (char *) malloc(100);
if (str == NULL)
{
printf( “Not enough memory to allocate buffer\n”);
exit(1);
}
printf( “String was allocated!\n” );
return 0;
}
Example 2
/* allocate memory for an array of 50 integers */
int *numbers;
numbers = (int *) malloc(50 * sizeof(int));
Example 3
/* allocate memory for an array of 10 float values */
float *numbers;
numbers = (float *) malloc(10 * sizeof(float));
Structures,Unions, Typedefs
A structure is a collection of one or more variables grouped under a single name for easy manipulation.
struct coord {
int x;
int y;
};
- Using a simple structure
/* simple.c - Demonstrates the use of a simple structures*/
#include <stdio.h>
int length, width;
long area;
struct coord{
int x;
int y;
} myPoint;
int main( void )
{
/* set values into the coordinates */
myPoint.x = 12;
myPoint.y = 14;
printf(“\nThe coordinates are: (%d, %d).”,
myPoint.x, myPoint.y);
return 0;
}
- Complex Structures
- Initializing structures
- Structures and pointers
- Unions
Variable Scopes
The scope of a variable refers to the extent to which different parts of a program have access to the variable—in other words, where the variable is visible
- External variables
- local Variables
Advanced Program control(break,continue,switch,exit())
- Ending loops early with break
- goto statement
- Infinite loops
- Exiting the program
- Executing OS commands in a program
Input and Output
Pointers-advanced
- Declaring Pointers to pointers
- Pointers and Multidimensional Arrays
- Working with Arrays of Pointers
- Working with Pointers to Functions
Using Disc files
Manipulating strings
Functions-advanced
- Passing Pointers to Functions
- Functions That Return a Pointer
C function Library
- Math functions
- Dealing with time
- Error handling
- Searching and sorting
Working with memory
- Type conversions
numerical data types
char short int long long long float double long double
- Allocating memory storage space
- Manipulating Memory Blocks
Advanced compiler use
- Modular Programming techniques