C/C Tutorial - PowerPoint PPT Presentation

About This Presentation
Title:

C/C Tutorial

Description:

'Hello World' Program. Data Types & Variables ... hello 10. What value is argc and argv? ... The 0th element in argv is ./hello. The 1th element in argv is 10 ... – PowerPoint PPT presentation

Number of Views:184
Avg rating:3.0/5.0
Slides: 64
Provided by: Ton16
Category:
Tags: hello | tutorial

less

Transcript and Presenter's Notes

Title: C/C Tutorial


1
C/C Tutorial
  • CSU480

2
Who is the TA?
  • Name Jingjing Duan
  • Office Hours (might change)
  • Tue Fri 200-400
  • Office Room 266, WVH
  • Email duanjj_at_ccs.neu.edu
  • Class web www.ccs.neu.edu/course/csu480

3
Outline
  • Pointers
  • Functions
  • Command-Line Argument
  • Data Structure
  • Memory Allocation
  • Programming Tips
  • C vs. C
  • Books recommended
  • Hello World" Program
  • Data Types Variables
  • printf()
  • Arithmetic Logical Operations
  • Conditionals
  • Loops
  • Arrays Strings

4
Hello World Program
  • The source code
  • include ltstdio.hgt
  • int main()
  • printf("Hello World\n")
  • return(0)

5
Hello World Program
  • How to compile?
  • gcc hello.c o hello

gcc compiling command
hello.c source file
hello compiler-generated executable file
Note the default output filename is a.out
6
Hello World Program
  • How to execute?
  • ./hello
  • ./ indicates the following file hello
    resides under the current directory.

Q why . is not included in PATH environment
variable?
7
Hello World Program
  • A security consideration.

Command Location Comment
ls /bin/ls provided by the system
ls current directory virus
8
Data types
Name Description Size Range
char Character or small integer 1 byte signed -128 to 127unsigned 0 to 255
short int (short) Short integer 2 bytes signed -32768 to 32767unsigned 0 to 65535
int Integer 4 bytes signed -2147483648 to 2147483647unsigned 0 to 4294967295
long int (long) Long integer 4 bytes signed -2147483648 to 2147483647unsigned 0 to 4294967295
float Floating point number 4 bytes 3.4e /- 38 (7 digits)
double Double precision floating point number 8 bytes 1.7e /- 308 (15 digits)
long double Long double precision floating point number 8 bytes 1.7e /- 308 (15 digits)
9
  • Variable Declaration
  • int length 100
  • char num 9 //The actual value is 57
  • float deposit 240.5
  • unsigned short ID 0x5544
  • Try the following statements, and see what
    happens
  • unsigned char value -1
  • printf(The value is d \n, value)
  • unsigned char value 300
  • printf(The value is d \n, value)

10
Result
Definition Memory layout Display comment
unsigned char value -1 11111111 255
unsigned char value 300 00101100 44 overflow
11
Variable types
  • Local variable
  • Local variables are declared within the body of
    a function, and can only be used within that
    function.
  • Static variable
  • Another class of local variable is the static
    type. It is specified by the keyword static in
    the variable declaration.
  • The most striking difference from a non-static
    local variable is, a static variable is not
    destroyed on exit from the function.
  • Global variable
  • A global variable declaration looks normal, but
    is located outside any of the program's
    functions. So it is accessible to all functions.

12
  • An example
  • int global 10 //global variable
  • int func (int x)
  • static int stat_var //static local variable
  • int temp //(normal) local variable
  • int name50 //(normal) local variable

13
Variable Definition vs Declaration
Definition Tell the compiler about the variable its type and name, as well as allocated a memory cell for the variable
Declaration Describe information about'' the variable, doesnt allocate memory cell for the variable
14
http//www-ee.eng.hawaii.edu/tep/EE150/book/chap1
4/subsection2.1.1.4.html
15
printf()
  • The printf() function can be instructed to print
    integers, floats and string properly.
  • The general syntax is
  • printf( format, variables)
  • An example
  • int stud_id 5200
  • char name Mike
  • printf(s s ID is d \n, name, stud_id)

16
  • Format Identifiers
  • d decimal integers
  • x hex integer
  • c character
  • f float and double number
  • s string
  • p pointer
  • How to specify display space for a variable?
  • printf(The student id is 5d \n, stud_id)
  • The value of stud_id will occupy 5 characters
    space in the print-out.

17
  • Why \n
  • It introduces a new line on the terminal screen.

escape sequence
\a alert (bell) character \\ backslash
\b backspace \? question mark
\f formfeed \ single quote
\n newline \ double quote
\r carriage return \000 octal number
\t horizontal tab \xhh hexadecimal number
\v vertical tab
18
Arithmetic Operations
19
Arithmetic Assignment Operators
20
Increment and Decrement Operators
awkward easy easiest
x x1 x 1 x
x x-1 x - 1 x--
21
Example
  • Arithmetic operators
  • int i 10
  • int j 15
  • int add i j //25
  • int diff j i //5
  • int product i j // 150
  • int quotient j / i // 1
  • int residual j i // 5
  • i //Increase by 1
  • i-- //Decrease by 1

22
  • Comparing them
  • int i 10
  • int j 15
  • float k 15.0
  • j / i ?
  • j i ?
  • k / i ?
  • k i ?

23
  • The Answer
  • j / i 1
  • j i 5
  • k / i 1.5
  • k i It is illegal.
  • Note For , the operands can only be integers.

24
Logical Operations
  • What is true and false in C
  • In C, there is no specific data type to
    represent true and false. C uses value 0 to
    represent false, and uses non-zero value to
    stand for true.
  • Logical Operators
  • A B gt A and B
  • A B gt A or B
  • A B gt Is A equal to B?
  • A ! B gt Is A not equal to B?

25
  • A gt B gt Is A greater than B?
  • A gt B gt Is A greater than or equal to
    B?
  • A lt B gt Is A less than B?
  • A lt B gt Is A less than or equal to
    B?
  • Dont be confused
  • and have different meanings from and .
  • and are bitwise operators.

26
Short circuiting
  • Short circuiting means that we don't evaluate the
    second part of an AND or OR unless we really need
    to.
  • Some practices
  • Please compute the value of the following
    logical expressions?

27
  • int i 10 int j 15 int k 15 int m 0
  • if( i lt j j lt k) gt
  • if( i ! j k lt j) gt
  • if( jlt k i gt k) gt
  • if( j k m) gt
  • if(i) gt
  • if(m j i ) gt

28
  • int i 10 int j 15 int k 15 int m 0
  • if( i lt j j lt k) gt false
  • if( i ! j k lt j) gt true
  • if( jlt k i gt k) gt true
  • if( j k m) gt false
  • if(i) gt true
  • if(m j i ) gt true
  • Did you get the correct answers?

29
Conditionals
  • if statement
  • Three basic formats,
  • if (expression)
  • statement
  • if (expression)
  • statement
  • else
  • statement

30
  • if (expression)
  • statement
  • else if (expression)
  • statement
  • else
  • statement

31
  • An example
  • if(score gt 90)
  • a_cnt
  • else if(score gt 80)
  • b_cnt
  • else if(score gt 70)
  • c_cnt
  • else if (scoregt 60)
  • d_cnt
  • else
  • f_cnt

32
  • The switch statement
  • switch (expression) 
  • case item1
  • statement
  • break
  • case item2
  • statement
  • break
  • default
  • statement
  • break

33
Loops
  • for statement
  • for (expression1 expression2 expression3)
  • statement
  • expression1 initializes
  • expression2 is the terminate test
  • expression3 is the modifier

34
  • An example
  • int x
  • for (x0 xlt3 x)
  • printf("xd\n",x)
  • First time x 0
  • Second time x 1
  • Third time x 2
  • Fourth time x 3 (dont execute the body)

35
  • The while statement
  • while (expression)
  • statement
  • while loop exits only when the expression is
    false.
  • An example
  • int x 3
  • while (xgt0)
  • printf("xd n",x)
  • x--

36
for ltgt while
expression1 while (expression2) statement exp
ression3
  • for (expression1 expression2 expression3)
  • statement

equals
37
Arrays Strings
  • Arrays
  • int ids50
  • char name100
  • int table_of_num3040
  • Accessing an array
  • ids0 40
  • i ids1 j
  • table_of_num34 100
  • Note In C Array subscripts start at 0 and end
    one less than the array size. 0 .. n-1

38
  • Strings
  • Strings are defined as arrays of characters.
  • The only difference from a character array is, a
    symbol \0 is used to indicate the end of a
    string.
  • For example, suppose we have a character array,
    char name8, and we store into it a string
    Dave.
  • Note the length of this string 4, but it
    occupies 5 bytes.

D a v e \0
39
Functions
  • Functions are easy to use they allow complicated
    programs to be broken into small blocks, each of
    which is easier to write, read, and maintain.
    This is called modulation.
  • How does a function look like?
  • returntype function_name(parameters)    
  •  
  • local variables declaration  
  • function code
  • return result  

40
  • Sample function
  • int addition(int x, int y)
  • int add
  • add x y
  • return add
  • How to call a function?
  • int result
  • int i 5, j 6
  • result addition(i, j)

41
Pointers
  • Pointer is the most beautiful (ugliest) part of
    C, but also brings most trouble to C programmers.
    Over 90 bugs in the C programs come from
    pointers.
  • The International Obfuscated C Code Contest
  • (http//www.ioccc.org/)
  • What is a pointer?
  • A pointer is a variable which contains the
    address in memory of another variable.
  • In C we have a specific type for pointers.

42
  • Declaring a pointer variable
  • int pointer
  • char name
  • How to obtain the address of a variable?
  • int x 0x2233
  • pointer x
  • where is called address of operator.
  • How to get the value of the variable indicated by
    the pointer?
  • int y pointer

43
  • What happens in the memory?
  • Suppose the address of variable x is 0x5200 in
    the above example, so the value of the variable
    pointer is 0x5200.

pointer
X
0x5200
33 22 00 00
0x5200
0x5203
44
swap the value of two variables
45
Why is the left one not working?
swap
x, y
x, y, a, b are all local variables
main
a, b
call swap(a, b) in main
46
Why is the right one working?
47
  • Pointers and Arrays
  • Pointers and arrays are very closely linked in
    C.
  • Array elements arranged in consecutive memory
    locations
  • Accessing array elements using pointers
  • int ids50
  • int p ids0
  • pi ltgt idsi
  • Pointers and Strings
  • A string can be represented by a char pointer.

48
  • Char name50
  • name0 D
  • name1 a
  • name2 v
  • name3 e
  • name4 \0
  • char p name0
  • printf(The name is s \n, p)
  • Note The p represents the string Dave, but not
    the array
  • name50.

49
Command-Line Argument
  • In C you can pass arguments to main() function.
  • main() prototype
  • int main(int argc, char argv)
  • argc indicates the number of arguments
  • argv is an array of input string pointers.
  • How to pass your own arguments?
  • ./hello 10

50
  • What value is argc and argv?
  • Lets add two printf statement to get the value
    of argc and argv.
  • include ltstdio.hgt
  • int main(int argc, char argv))
  • int i0
  • printf("Hello World\n")
  • printf(The argc is d \n, argc)
  • for(i0 i lt argc i)
  • printf(The dth element in argv is s\n,
    i, argvi)
  • return(0)

51
  • The output
  • The argc is 2
  • The 0th element in argv is ./hello
  • The 1th element in argv is 10
  • The trick is the system always passes the name
    of the executable file as the first argument to
    the main() function.
  • How to use your argument?
  • Be careful. Your arguments to main() are always
    in string format.
  • Taking the above program for example, the
    argv1 is string 10, not a number. You must
    convert it into a number before you can use it.

52
Data Structure
  • A data structure is a collection of one or more
    variables, possibly of different types.
  • An example of student record
  • struct stud_record
  • char name50
  • int id
  • int age
  • int major

53
  • A data structure is also a data type
  • struct stud_record my_record
  • struct stud_record pointer
  • pointer my_record
  • Accessing a field inside a data structure
  • my_record.id 10 .
  • or
  • pointer-gtid 10 -gt

54
Memory Allocation
  • Stack memory allocation
  • Non-static local variable is an example of stack
    memory allocation.
  • Such memory allocations are placed in a system
    memory area called the stack.
  • Static memory allocation
  • Static local variable and global variable
    require static memory allocation. Static memory
    allocation happens before the program starts, and
    persists through the entire life time of the
    program.

55
  • Dynamic memory allocation
  • It allows the program determine how much memory
    it needs at run time, and allocate exactly the
    right amount of storage.
  • The region of memory where dynamic allocation
    and deallocation of memory can take place is
    called the heap.
  • Note the program has the responsibility to free
    the dynamic memory it allocated.

56
Memory arrangement
57
  • Functions for the dynamic memory allocation
  • void malloc(size_t number_of_bytes)
  • allocates dynamic memory
  • size_t sizeof(type)
  • returns the number of bytes of type
  • void free(void p)
  • releases dynamic memory allocation
  • An example of dynamic memory allocation
  • int ids //id arrays
  • int num_of_ids 40
  • ids malloc( sizeof(int) num_of_ids)
  • .. Processing ...
  • free(ids)

58
  • Allocating a data structure instance
  • struct stud_record pointer
  • pointer malloc(sizeof(struct stud_record))
  • pointer-gtid 10
  • Never calculate the size of data structure
    yourself. The reason is the size of data types is
    machine-dependent. Give it to sizeof() function.

size of int
32-bytes machines 32
64-bytes machines 64
59
Programming Tips
  • Replacing numbers in your code with macros
  • - dont use magic numbers directly
  • define MAX_NAME_LEN 50
  • char nameMAX_NAME_LEN
  • Avoiding global variables
  • - modulation is more important
  • Giving variables and functions a nice name
  • - a meaning name
  • Dont repeat your code
  • - make a subroutine/function
  • Dont let the function body to exceed one screen
  • - hard to debug

60
  • Indenting your code (clearance)
  • if(expression)
  • if(expression)
  • Commenting your code
  • Dont rush into coding. Plan first.
  • Printing out more debugging information
  • Using debugger (gdb)

61
C vs. C
  • C is a superset of C
  • C has all the characteristics of C
  • Using g to compile your source code

62
Books recommended
  • The C Programming Language, Brian Kernighan and
    Dennis Ritchie. Second edition. Prentice-Hall,
    1988. (C Bible)
  • The C Programming Language, Bjarne Stroustrup.
    Third edition. Addison-Wesley, 1997. (C Bible)
  • Advanced Programming in the UNIX Environment, W.
    Richard Stevens, Addison-Wesley, 1992. (APUE)

63
Thanks
Write a Comment
User Comments (0)
About PowerShow.com