230 likes | 348 Vues
This guide offers a detailed overview of essential C programming concepts, including variable types like int, char, double, and long, as well as control structures such as loops and conditionals. It delves into functions, their prototypes, and the importance of the main() function. The use of pointers, dynamic memory allocation, and structures are covered in-depth, providing real-world examples. Practical insights into common pitfalls and debugging tips are also included, making this resource a valuable tool for both beginners and experienced programmers.
E N D
C Programming Revision Malcolm Wilson
Variables • Types int, char, double, long. NO type for string see later. • unsigned above. • assignment X=2 ; C=‘v’;
Keywords • C has a small number of “keywords” • http://tigcc.ticalc.org/doc/keywords.html
Standard I/O • printf() • scanf() • Format specifiers %d, %f, %c, %s http://en.wikipedia.org/wiki/Printf http://en.wikipedia.org/wiki/Scanf
Operations • +, -, *, /, %, ^ • Operation dependent on variable type • Try some
Boolean • Any value other than zero is true. • Watch out for == “is equal to”.
Control for(i=0, i<9, i++) { code block} while (x<8) {code block} if (y==2) {code block} elseif(y==7) {code block} else {code block}
Control switch( myvar) case 1 : {code block break;} case 2: {code block break;} default {code block} http://msdn.microsoft.com/en-us/library/66k51h7a%28VS.80%29.aspx
Control Code block is surrounded by {} if more than one line. Don’t need {} if code one line long. eg for(i=0; i<5; i++) printf(“ number is: %d /n”, i);
Functions and Prototypes • C is composed of functions, and must have at least one function called main(). • Functions accept parameters and return values • A “prototype” should be written which indicates what data types a function should accept and return. • Eg int mynumberfunction( int num1, int num2) ;
Scope and storage class • Used for AVR • Static ,will remain even after function has exited. • Global • Volatile , can be changed by unpredicable actions.
Preprocessor directives • #include • “localfile” • <standard_locations> /usr/include • #define • #define WIDTH 80 • #define LENGTH ( WIDTH + 10 ) • #define u8 unsigned char
Arrays and strings • int myarray[5]; • int myarray[5]={1, 2, 3}; • int myarray[]={1,2,3,4,5}; • char mychararray=“malcolm”; • A string is a “null terminated” char array.
Structures struct struct_name { structure_member; ... } instance_1,instance_2 instance_n; OR struct struct_name instance_1,instance_2 ,instance3 After defining the structure. http://cprogramminglanguage.net/c-structure.aspx
Structures • Using typedef to avoid struct structurename all the time. • typedef struct{ unsigned int house_number; char street_name[50]; int zip_code; char country[50]; } address; address billing_addr; address shipping_addr;
Pointers • Declared as using * • int *p says p in a pointer to an integer. • p points to the memory location where a integer is stored. • Confusing , in the code. *p means the contents of memory location p. • And &p is the memory address of p.
Pointers and arrays • myarray is the same as &myarray[0] • So if an array is initialised as char name[]=“malcolm”; • *(name+3) will be ‘c’;
Dynamic memory allocation • Allocates memory on the “heap” • malloc(n) • calloc(s, nbytes) intialises memory • free();
sizeof() • Used for malloc to allocate memory
Pointers and structures #include <stdio.h> #include <stdlib.h> main() { • printf("hello world \n"); • structmystruct{ • int age; • char buffer[20]; • }mydata; • mydata.age=45; • printf("age is %d \n", mydata.age); • structmystruct * d; • d=malloc(sizeof(structmystruct)); • d->age=53; • printf("pointed age is %d \n", d->age); }
argv and argc • int main (int argc, char *argv[]) { } • argc , argument count • argv , argument vector
Boo Boo’s in C • Forgetting the semicolon • Using = in a boolean expression instead of ==. • Completing a loop with no code being executed. • while(test); { code block}
Deep C • Lvalues, Rvalues • Inline functions • Pointers to functions • Pointers to pointers and multidimensional arrays.