Tài Liệu Lập Trình C Tiếng Việt

Embed Size (px)

DESCRIPTION

Tài Liệu Lập Trình C Tiếng Việt online từ cơ bản đến nâng cao

Citation preview

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 1

    Mc lc Gii thiu v Ngn ng C ..................................................................................................... 6

    i vi c gi ...................................................................................................................... 6

    iu kin tin ................................................................................................................... 6

    Tng quan v Ngn ng C ................................................................................................... 6

    S tht v ngn ng C ..................................................................................................... 7

    Ti sao li s dng C? ...................................................................................................... 7

    Chng trnh C ................................................................................................................ 8

    Ci t mi trng C ............................................................................................................ 8

    Ci t mi trng cc b - Local ..................................................................................... 8

    Text Editor ........................................................................................................................ 8

    B bin dch C .................................................................................................................. 8

    Ci t trn mi trng UNIX/Linux .................................................................................. 9

    Ci t trn mi trng Mac OS ....................................................................................... 9

    Ci t trn Windows ...................................................................................................... 10

    Cu trc chng trnh C ..................................................................................................... 10

    Chng trnh C: Hello World........................................................................................... 10

    Bin dch & Thc thi Chng trnh C .............................................................................. 11

    C php C c bn .............................................................................................................. 12

    Cc Token trong C .......................................................................................................... 12

    Du chm phy ; trong C ................................................................................................ 12

    Comment trong C ........................................................................................................... 13

    nh danh (Identifier) trong C .......................................................................................... 13

    Cc t kha trong C ........................................................................................................ 13

    Khong trng trong C ...................................................................................................... 14

    Kiu d liu trong C ............................................................................................................ 14

    Kiu integer ..................................................................................................................... 15

    Kiu du chm ng (Floating-Point) .............................................................................. 17

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 2

    Kiu void ......................................................................................................................... 18

    Bin trong C ........................................................................................................................ 19

    nh ngha bin trong ngn ng C: ................................................................................. 19

    Khai bo bin trong ngn ng C: .................................................................................... 20

    V d ............................................................................................................................... 21

    Lvalue v Rvalue trong C: ............................................................................................... 22

    Hng s trong C .................................................................................................................. 23

    Hng s nguyn - Interger .............................................................................................. 23

    Hng s du chm ng ................................................................................................ 24

    Hng s k t ................................................................................................................. 24

    Hng s chui (string) ..................................................................................................... 26

    nh ngha hng s ......................................................................................................... 26

    S dng b tin x l #define ......................................................................................... 26

    S dng t kha const ................................................................................................... 27

    Lp lu tr trong C ............................................................................................................. 28

    Lp lu tr auto .............................................................................................................. 28

    Lp lu tr register ......................................................................................................... 29

    Lp lu tr static ............................................................................................................. 29

    Lp lu tr extern ........................................................................................................... 30

    Ton t trong C .................................................................................................................. 31

    Ton t s hc ................................................................................................................ 32

    Ton t quan h ............................................................................................................. 33

    Ton t logic ................................................................................................................... 34

    Ton t so snh bit ......................................................................................................... 35

    Ton t gn .................................................................................................................... 38

    Cc ton t hn hp sizeof & ternary ......................................................................... 40

    Th t u tin ton t trong C ........................................................................................ 41

    iu khin lung trong C ..................................................................................................... 43

    Ton t ? : ...................................................................................................................... 44

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 3

    Vng lp trong C ................................................................................................................. 44

    Cc lnh iu khin vng lp .......................................................................................... 46

    Vng lp v hn .............................................................................................................. 46

    Hm trong C ....................................................................................................................... 47

    nh ngha mt hm ....................................................................................................... 47

    V d: .............................................................................................................................. 48

    Khai bo hm ................................................................................................................. 49

    Gi hm .......................................................................................................................... 49

    Tham s ca hm: .......................................................................................................... 50

    Quy tc phm vi trong C ..................................................................................................... 51

    Bin cc b ..................................................................................................................... 52

    Bin ton cc .................................................................................................................. 52

    Tham s chnh thc ........................................................................................................ 54

    Khi to bin ton cc v bin cc b ............................................................................. 55

    Mng trong Ngn ng C ..................................................................................................... 55

    Khai bo mng trong C ................................................................................................... 56

    Khi to mng trong C .................................................................................................... 56

    Truy cp cc phn t mng trong C ................................................................................ 57

    Chi tit v mng trong C .................................................................................................. 58

    Con tr trong C ................................................................................................................... 59

    Con tr l g? .................................................................................................................. 60

    Cch s dng con tr? ................................................................................................... 61

    Con tr NULL trong ngn ng C ..................................................................................... 62

    Chi tit v con tr: ............................................................................................................ 62

    Chui trong C ...................................................................................................................... 63

    Cu trc trong C .................................................................................................................. 66

    nh ngha mt cu trc .................................................................................................. 66

    Truy cp cc thnh phn ca cu trc ............................................................................ 67

    Cc cu trc nh cc tham s hm ................................................................................ 69

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 4

    Con tr ti cu trc .......................................................................................................... 71

    Cc trng bit - Bit Fields ................................................................................................ 73

    Union trong C ...................................................................................................................... 73

    nh ngha mt Union ..................................................................................................... 74

    Truy xut thnh vin ca Union ....................................................................................... 75

    Trng Bit trong C .............................................................................................................. 77

    Khai bo Trng Bit ....................................................................................................... 79

    T kha typedef trong C ..................................................................................................... 81

    typedef vs #define ........................................................................................................... 82

    Input & Output trong C ........................................................................................................ 83

    Cc File tiu chun ......................................................................................................... 84

    Hm getchar() & putchar() .............................................................................................. 84

    Hm gets() & puts() ......................................................................................................... 85

    Hm scanf() v printf() ..................................................................................................... 86

    Nhp - Xut File trong C ...................................................................................................... 87

    M file ............................................................................................................................. 87

    ng file .......................................................................................................................... 88

    Ghi mt file ...................................................................................................................... 89

    c file ............................................................................................................................ 89

    Hm Nhp Xut nh phn ............................................................................................ 91

    B tin x l trong C ............................................................................................................ 91

    V d b tin x l ........................................................................................................... 92

    Cc Macro nh ngha trc ........................................................................................... 93

    Ton t tin x l ............................................................................................................ 95

    Phn tip tc macro (\) ........................................................................................... 95

    Du thng (#) ........................................................................................................... 95

    Ton t Token Pasting (##) .................................................................................. 95

    Ton t defined() .................................................................................................... 96

    Macro tham s ................................................................................................................ 97

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 5

    Header File trong C ............................................................................................................. 98

    C php Include .............................................................................................................. 98

    Hot ng Include ........................................................................................................... 98

    Once-Only Header .......................................................................................................... 99

    Include vi cc iu kin ................................................................................................. 99

    p kiu trong C ................................................................................................................. 100

    S nng cp integer ..................................................................................................... 101

    Php chuyn i s hc thng thng ......................................................................... 102

    X l li trong C ................................................................................................................ 103

    Hm perror() v strerror() v thng bo li errno ............................................................ 103

    Li chia cho s 0 ........................................................................................................... 105

    Trng thi thot chng trnh ........................................................................................ 105

    quy trong C .................................................................................................................. 106

    Tnh ton giai tha ........................................................................................................ 107

    Dy Fibonacci ............................................................................................................... 108

    Tham s bin trong C ....................................................................................................... 108

    Qun l b nh trong C .................................................................................................... 111

    Cp pht b nh ng .................................................................................................. 111

    Thay i v gii phng b nh ...................................................................................... 113

    Tham s dng lnh trong C .............................................................................................. 114

    C - Ti liu tham kho ....................................................................................................... 117

    Cc ng link hu ch v C ........................................................................................ 117

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 6

    Gii thiu v Ngn ng C Ngn ng C l ngn ng chng trnh my tnh theo cu lnh, th tc v theo mc ch chung

    c pht trin nm 1972 bi Dennis M. Ritchie Bell Telephone lab pht trin H iu hnh

    UNIX.

    Ngn ng C l ngn ng my tnh c s dng rng ri nht, n cng vi ngn ng Java l

    nhng ngn ng lp trnh ph bin hng u, c s dng rt rng ri trong gii lp trnh vin

    hin i.

    Lot bi hng dn ca chng ti da trn ngun ti liu ca: Tutorialspoint

    i vi c gi Bi hng dn ny c thit k cho nhng lp trnh vin cn tm hiu ngn ng C nh l ngn

    ng bt u cho vic tip cn th gii phn mm. Bi hng dn s a cho bn y nhng

    hiu bit v ngn ng C t bt u n mc nng cao.

    iu kin tin Trc khi bt u vi bi hc ny, bn nn c nhng hiu bit c bn v cc thut ng v

    Chng trnh my tnh. Nhng hiu bit c bn v bt c mt ngn ng lp trnh no cng c th

    gip bn d dng hiu cc khi nim trong ngn ng C v tin nhanh trn con ng hc tp.

    Tng quan v Ngn ng C Ngn ng C l ngn ng lp trnh bc cao c pht trin ban u bi Dennis M.Ritchie pht

    trin h thng lp trnh UNIX Bell Labs. C c pht trin ban u trn my tnh DEC PDP-11

    nm 1972.

    Nm 1978, Brian Kernighan v Dennis Ritchie cng khai bn m t u tin ca ngn ng C, c

    bit n di tn tiu chun K&R.

    H iu hnh UNIX, b bin dch C, l tt c nhng g cn thit cho vic vit cc chng trnh vi

    ngn ng C. Ngn ng C hin ti c s dng rng ri trong mi trng chuyn nghip v nhng

    l do sau y:

    D dng trong vic hc

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 7

    Ngn ng c cu trc

    N cung cp cc chng trnh hiu qu.

    N c th x l cc hot ng tng thp.

    N c bin dch bi nhiu nn tng khc nhau.

    S tht v ngn ng C C c pht trin ban u vit H iu hnh c tn UNIX.

    C l ngn ng k tha ca ngn ng B c gii thiu nhng nm 1970.

    Ngn ng c chun ha nm 1988 bi Vin tiu chun quc gia Hoa K (ANSI).

    H iu hnh UNIX vit bi ngn ng C nm 1973.

    Ngy nay C c s dng rng ri nht trong cc ngn ng lp trnh h thng.

    Hu ht cc ng dng ln u c s k tha, trin khai t ngn ng C.

    H iu hnh Linux v h qun tr c s d liu MySQL c vit bi ngn ng C.

    Ti sao li s dng C? C c pht trin ban u cho vic pht trin h thng, c bit l cc h iu hnh. C c tha

    nhn nh l mt trong cc ngn ng pht trin h thng bi n cung cp code v chy mt on

    code mt cc nhanh chng nh cc ngn ng kiu Assemly. Vi v d v s dng C nh sau:

    H iu hnh

    B bin dch cc ngn ng

    Cc chng trnh dch m s

    Cc trnh Text Editor (notepad ...)

    Cc trnh in n

    Network Drivers

    Cc chng trnh hin i

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 8

    C s d liu

    Ngn ng thng dch

    Tin ch

    Chng trnh C Mt chng trnh C c th thay i t 3 dng n hng triu dng code, v nn c vit trong

    mt hoc nhiu file vi nh dng .c, v d hello.c. Bn c th s dng vi, vim hoc bt k

    trnh editor no vit chng trnh C thnh mt file.

    Bi hng dn gi s bn bit cch s dng cc trnh son tho v cch vit source code - m

    ngun bn trong mt file chng trnh.

    Ci t mi trng C Ci t mi trng cc b - Local Nu bn ang mun ci t chng trnh C, bn cn phi s dng 2 phn mm trn my tnh ca

    bn: (a) Chng trnh son vn bn - Text Editor v (b) B bin dch C.

    Text Editor c s dng son tho cc chng trnh. V d v mt vi trnh editor nh Window Notepad,

    Notepad ++, vim hay vi

    Tn v cc phin bn ca cc trnh editor c th thay i theo cc h iu hnh. V d, Notepad

    c s dng trn Windows, hoc vim hay vi c s dng trn Linux hoc UNIX.

    Cc file bn to trong trnh editor c gi l source file (file ngun) v cha cc chng trnh

    code. Cc file trong chng trnh C thng c t tn vi phn m rng ".c".

    Trc khi bt u chng trnh ca bn, hy chc chn bn c mt trnh editor trn my tnh v

    bn c kinh nghim vit cc chng trnh my tnh, lu tr trong file v thc thi n.

    B bin dch C M ngun c vit trong file ngun di dng c th c c. N s c bin dch thnh m

    my, cho CPU c th thc hin cc chng trnh ny da trn cc lnh c vit.

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 9

    B bin dch c s dng bin dch m ngun (source code) ca bn n chng trnh c th

    thc thi. Ti gi s bn c kin thc c bn v mt b bin dch ngn ng lp trnh.

    B bin dch thng dng nht l b bin dch GNU C/C++, mt khc bn c th c cc b bin dch

    khc nh HP hoc Solaris vi H iu hnh tng ng.

    Di y l phn hng dn gip bn cch ci t b bin dich GNU C/C++ trn cc h iu hnh

    khc nhau. Ti ang cp n C/C++ bi v b bin dch GNU gcc hot ng cho c ngn ng C

    v C++.

    Ci t trn mi trng UNIX/Linux Nu bn ang s dng Linux hoc UNIX, bn c th kim tra b GCC c ci t trn mi

    trng ca bn cha bng lnh sau y:

    $ gcc -v

    Nu bn c b ci t GNU trn my tnh ca bn, sau n s phn hi mt thng bo sau:

    Using built-in specs.

    Target: i386-redhat-linux

    Configured with: ../configure --prefix=/usr .......

    Thread model: posix

    gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)

    Nu b GCC cha c ci t, bn c th ci t n vi hng dn trn ng link di

    y: http://gcc.gnu.org/install/

    Bi hng dn ny c vit da trn Linux v tt c cc v d dc bin dch trn Cent OS ca

    h thng Linux.

    Ci t trn mi trng Mac OS Nu bn s dng h iu hnh Mac OS X, cch n gin nht c GCC l download mi trng

    pht trin Xcode, bn c th s dng b bin dch GNU cho C/C++.

    Xcode c sn di link sau: developer.apple.com/technologies/tools/.

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 10

    Ci t trn Windows ci t GCC trn Windows bn cn phi ci t MinGW. ci t MinGW, bn truy cp

    vo www.mingw.org, v theo hng dn trn trang download ny. Download phin bn mi nht

    cho chng trnh MinGW, di tn MinGW-.exe.

    Khi ci t MinWG, t nht bn phi ci t gcc-core, gcc-g++, binutils v MinGW runtime, nhng

    bn c th ci t nhiu hn.

    Thm th mc con bin trong ni ci t MinGW vo bin mi trng PATH ca bn, bn c th s

    dng trc tip cc cng c di dng command line mt cc d dng.

    Khi qu trnh ci t hon tt, bn c th chy gcc, g++, ar, ranlib, dlltool v cc cng c GNU khc

    trn Windows command line.

    Cu trc chng trnh C Trc khi chng ta nghin cu v cc khi to nn mt chng trnh C, u tin bn hy xem mt

    chng trnh C mu.

    Chng trnh C: Hello World Mt chng trnh C bao gm nhng phn sau y:

    Cc lnh tin x l

    Cc hm

    Cc bin

    Cc lnh v biu thc

    Cc comment

    u tin hy xem on code n gin m s in ra mn hnh hai t Hello World:

    #include

    int main()

    {

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 11

    /* my first program in C */

    printf("Hello, World! \n");

    return 0;

    }

    Hy xem cc phn ca chng trnh bn trn:

    1. Dng u tin ca chng trnh #include l lnh tin x l, nhc nh b bin dch

    C thm tp stdio.h trc khi bin dch.

    2. Dng tip theo int main() l hm main, ni chng trnh bt u.

    3. Dng tip theo /*...*/ l dng comment c b qua bi b bin dch compiler v c dng

    thm cc ch thch cho chng trnh. y c gi l phn comment ca chng trnh.

    4. Dng tip theo printf(...) l mt hm chc nng khc ca ngn ng C , in ra thng ip

    Hello, World! hin th trn mn hnh.

    5. Dng tip theo return 0; kt thc hm chnh v tr v gi tr 0.

    Bin dch & Thc thi Chng trnh C Hy cng xem cch lu tr on source code bn trn v cch bin dch v chy n. Di y

    l nhng bc c bn:

    1. M mt trnh editor v thm dng code trn.

    2. Lu tp di dng hello.c

    3. M dng nhc lnh v i ti th mc lu tr file.

    4. Son tho gcc hello.c v nhn Enter bin dch dng code trn.

    5. Nu khng c li trn on code bn trn, dng nhc lnh s a bn n dng tip theo

    v to ra file a.out c th thc thi.

    6. By gi, son tho a.out thc hin chng trnh ny.

    7. By gi bn s thy dng ch Hello, World c in trn mn hnh.

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 12

    $ gcc hello.c

    $ ./a.out

    Hello, World!

    Bn phi chc chn b bin dch gcc c ci t trn my tnh ca bn v bn ang chy n

    trong th mc cha file ngun hello.c.

    C php C c bn Bn bit v cu trc c bn ca chng trnh C, by gi bn s d dng hiu c nhng khi

    c bn trong ngn ng C.

    Cc Token trong C Trong ngn ng C bao gm rt nhiu cc token khc nhau v mt token c th l mt t kha, mt

    nh danh, mt hng s, mt chui hoc mt k t. V d, dng lnh C di y bao gm 5 token

    sau:

    printf("Hello, World! \n");

    Cc token ring r nh sau:

    printf

    (

    "Hello, World! \n"

    )

    ;

    Du chm phy ; trong C Chng trnh C, du chm phy l mt phn kt thc lnh. Thc t mi lnh trong C phi kt thc

    bi mt du chm phy. N thng bo phn kt thc ca mt thuc tnh logic.

    V d di y l 2 on lnh:

    printf("Hello, World! \n");

    return 0;

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 13

    Comment trong C Ch thch ging nh vic tr gip trong chng trnh C v c b qua bi b bin dch. N bt

    u vi /* v kt thc vi k t */ nh di y:

    /* my first program in C */

    Bn khng th c thm mt phn comment bn trong phn comment ny.

    nh danh (Identifier) trong C Mt nh danh trong C l mt tn c s dng nh mt bin, hm v mt thnh phn c ngi

    dng nh ngha. Mt nh danh c th bt u bi cc k t A n Z, a n z v du underscore _

    v s 0 n 9.

    C khng cho php cc du nh @, $, v % trong tn nh danh. C l ngn ng phn bit ch

    thng - ch hoa. Do , Manpower v manpower l hai nh danh khc nhau trong C. Di y

    l mt vi v d nh danh hp l:

    mohd zara abc move_name a_123

    myname50 _temp j a23b9 retVal

    Cc t kha trong C Di y l danh sch cc t kha c dnh ring trong ngn ng C. Cc nh danh hay bin,

    hng s khng th t tn ging cc t kha di y, nu khng chng trnh s bo li.

    auto else long switch

    break enum register typedef

    case extern return union

    char float short unsigned

    const for signed void

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 14

    continue goto sizeof volatile

    default if static while

    do int struct _Packed

    double

    Khong trng trong C Mt dng c th cha khong trng, c th l nhng dng comment, c bit n nh dng

    trng khi cng c b bin dch b qua khi bin dch.

    Mt khong trng trong C c th l mt on trng, tab, newline hoc comment. Mt khong trng

    chia mt phn ca lnh thnh nhiu phn v gip b bin dch phn bit mt thnh phn trong mt

    lnh, nh int , kt thc thnh phn v bt u thnh phn tip theo nh lnh sau:

    int age;

    Phi c t nht mt khong trng k t gia int v age b bin dch hiu v phn bit c

    chng. Mt khc, xem lnh di y:

    fruit = apples + oranges; // get the total fruit

    Khng cn thit khong trng gia fruit v du =, hoc gia du = v apples.

    Kiu d liu trong C Trong ngn ng lp trnh C, cc kiu d liu m ch phn m rng ca h thng c s dng cho

    khai bo bin vi ci kiu khc nhau. Kiu ca bin xc nh lng b nh c dng lu bin

    v cch cc bit c lu tr khi c thng dch.

    Cc kiu bin trong C c phn chia nh sau:

    STT Kiu v miu t

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 15

    1 Kiu c bn:

    L cc kiu d liu s hc v bao gm 2 kiu chnh: a) kiu integer v b)

    kiu du chm ng.

    2 Kiu lit k:

    y l cc kiu s hc v c dng nh ngha cc bin m n c th

    c gn trc mt s lng nht nh gi tr integer qua sut chng

    trnh.

    3 Kiu void:

    Kiu nh danh void l kiu c bit th hin rng khng c gi tr no.

    4 Kiu pht trin t c bn:

    Bao gm cc kiu : a) con tr, b) kiu mng, c) kiu cu trc, d) kiu union

    v e) kiu function (hm).

    Cc kiu d liu mng v cu trc c s dng trong tp hp nh cc kiu d liu gp. Cc kiu

    l hm ch nh loi kiu m hm tr v. Chng ta s xem cc kiu d liu c bn phn di y,

    trong nhng kiu cn li s c nhc n cc chng sau.

    Kiu integer Bng di y a cho bn nhng hiu bit chi tit v kiu s nguyn vi c lu tr cng nh gii

    hn ca n:

    Kiu C lu tr Dy gi tr

    char 1 byte -128 ti 127 hoc 0 ti 255

    unsigned 1 byte 0 ti 255

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 16

    char

    signed char 1 byte -128 ti 127

    int 2 hoc 4

    bytes

    -32,768 ti 32,767 hoc -2,147,483,648 ti

    2,147,483,647

    unsigned int 2 hoc 4

    bytes

    0 ti 65,535 hoc 0 ti 4,294,967,295

    short 2 bytes -32,768 ti 32,767

    unsigned

    short

    2 bytes 0 ti 65,535

    long 4 bytes -2,147,483,648 ti 2,147,483,647

    unsigned

    long

    4 bytes 0 ti 4,294,967,295

    Bn c th ly c chnh xc ca cc kiu ca cc bin trn nhng nn tng c th, bn c th s

    dng ton t sizeof. Biu thc sizeof(kieu) tr v c ca i tng hoc kiu di dng byte.

    Di y l v d ly v size ca i tng int trn bt k my tnh no.

    #include

    #include

    int main()

    {

    printf("Storage size for int : %d \n", sizeof(int));

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 17

    return 0;

    }

    Khi bn bin dch v thc thi cc lnh bn trn, n s cung cp kt qu di y trn h iu hnh

    Linux:

    Storage size for int : 4

    Kiu du chm ng (Floating-Point) Bng di y a cho bn nhng hiu bit c th v cc kiu du chm ng tiu chun vi c

    lu tr v di gi tr cng nh chnh xc:

    Kiu C lu tr Dy gi tr chnh xc

    float 4 byte 1.2E-38 ti 3.4E+38 6 v tr thp phn

    double 8 byte 2.3E-308 ti 1.7E+308 15 v tr thp phn

    long double 10 byte 3.4E-4932 ti 1.1E+4932 19 v tr thp phn

    float.h trong Header file nh ngha cc macro cho php bn s dng cc gi tr ny v cc kiu c

    th khc v gi tr biu din nh phn ca s thc trong chng trnh ca bn. Di y l v d s

    in ra c ca kiu float cng nh di gi tr ca n:

    #include

    #include

    int main()

    {

    printf("Storage size for float : %d \n", sizeof(float));

    printf("Minimum float positive value: %E\n", FLT_MIN );

    printf("Maximum float positive value: %E\n", FLT_MAX );

    printf("Precision value: %d\n", FLT_DIG );

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 18

    return 0;

    }

    Khi bn bin dch v thc thi chng trnh trn, n s cung cp kt qu di y trn Linux:

    Storage size for float : 4

    Minimum float positive value: 1.175494E-38

    Maximum float positive value: 3.402823E+38

    Precision value: 6

    Kiu void Kiu void xc nh khng c gi tr no. N c s dng trong 3 trng hp sau y:

    STT Kiu v miu t

    1 Hm tr v void

    C rt nhiu hm trong ngn ng C m khng tr v d liu no v bn c

    th ni rng l hm void. Mt hm m khng tr v gi tr no c kiu l

    void. V d: void exit (int status);

    2 Hm vi tham s void

    C nhng hm trong C m khng chp nhn bt k tham s. Mt hm vi

    khng c tham s no c th chp nhu l mt void. V d: int rand(void);

    3 Con tr ti void

    Mt con tr c kiu void * i din cho a chi ca i tng, ch khng

    phi l mt kiu. V d hm cp pht b nh void *malloc (size_t size);tr

    v mt con tr void c th p kiu sang bt k mt i tng no.

    Bn c th khng hiu cc im ny v kiu void, chng ta nn tip tc v trong cc chng tip

    theo, chng ta s nhc li v cc im ny.

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 19

    Bin trong C Mt bin trong C khng l g nhng l mt tn c a ra n b nh lu tr chng trnh c

    th thao tc. Mi bin trong C c mt kiu xc nh, xc nh c v layout cho b nh bin .

    Phm vi ca gi tr c th c d tr trong b nh, vic thit lp cc biu thc c th c p

    dng vi bin.

    Tn ca bin c th bao gm ch ci, ch s v du gch di (_), nhng n phi bt u bng

    k t ch ci hoc du gch di. Ch hoa v ch thng l hai i tng phn bit bi v C l

    ngn ng phn bit ch hoa - ch thng. Da vo nhng loi c bn gii thch chng

    trc, c nhng loi kiu ca bin c bn nh sau:

    Kiu Miu t

    char L bin s nguyn, c kch c 1 byte.

    int L kiu cho s t nhin.

    float Gi tr du chm ng chnh xc n.

    double Gi tr du chm ng chnh xc kp.

    void i din cho loi khng c kiu.

    Ngn ng lp trnh C cho php nh ngha cc loi kiu bin khc nhau, c th xem cc chng

    sau nh bin lit k, bin con tr, bin mng, bin cu trc, bin Union, .

    nh ngha bin trong ngn ng C: nh ngha bin ngha l thng bo vi trnh bin dch ni v cch to lu tr cho bin . Mt nh

    ngha bin xc nh mt kiu d liu v cha danh sch ca mt hay nhiu bin ca kiu nh

    sau:

    type variable_list;

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 20

    y, type l ca kiu d liu ca ngn ng C nh char, w_char, int, float, double, bool hay bt

    k kiu i tng c ngi dng nh ngha variable_list c th bao gm mt hoc nhiu tn

    nh danh ngn cch nhau bi du phy. Vi v d khai bo hp l ca bin nh sau:

    int i, j, k;

    char c, ch;

    float f, salary;

    double d;

    Dng int i, j, k; va khai bo v nh ngha cho bin i, j, k v hng dn trnh bin dch to cc

    bin di tn i, j, k vi kiu int.

    Bin c th c khi to (c gn cc gi tr ban u) trong khai bo ca n. Mt phn khi to

    bao gm mt du "=" theo sau bi mt biu thc hng s s nh sau:

    type variable_name = value;

    Vi v d di y:

    extern int d = 3, f = 5; // declaration of d and f.

    int d = 3, f = 5; // definition and initializing d and f.

    byte z = 22; // definition and initializes z.

    char x = 'x'; // the variable x has the value 'x'.

    Vi nh ngha khng c gi tr khi to, bin static c th lu tr vi gi tr NULL, (tt c cc byte

    c gi tr 0), gi tr ban u ca tt c cc bin ca tt c cc kiu khc c gi tr khng xc nh.

    Khai bo bin trong ngn ng C: Khai bo bin cung cp mt s bo m cho trnh bin dch nhn bit rng khng c bin no vi

    kiu v tn ging n c khai bo trc , nu khng s xy ra li qu trnh bin dch. Mt

    khai bo bin ch c ngha thi gian bin dch, trnh bin dch cn khai bo bin c th ti thi

    gian ni vi chng trnh.

    Mt khai bo bin rt hu dng khi bn s dng ng thi nhiu file v bn nh ngha bin ca

    bn mt trong nhng file . Bn c th s dng t kha extern khai bo bin bt k ni

    u. Do bn c th khai bo mt bin nhiu ln trong chng trnh C nhng ch phi nh ngha

    trong mt file, mt hm hay mt khi code.

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 21

    V d Th v d di y, ni bin c khai bo trn u, nhng chng c nh ngha v khi to

    trong hm main:

    #include

    // Variable declaration:

    extern int a, b;

    extern int c;

    extern float f;

    int main ()

    {

    /* variable definition: */

    int a, b;

    int c;

    float f;

    /* actual initialization */

    a = 10;

    b = 20;

    c = a + b;

    printf("value of c : %d \n", c);

    f = 70.0/3.0;

    printf("value of f : %f \n", f);

    return 0;

    }

    Khi on code bn trn c bin dch v thc thi. N s in ra kt qu di y:

    value of c : 30

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 22

    value of f : 23.333334

    Vi khi nim c th p dng trong khai bo hm ni bn cung cp tn hm thi im n khai

    bo v nh ngha n bt k ni u. V d:

    // function declaration

    int func();

    int main()

    {

    // function call

    int i = func();

    }

    // function definition

    int func()

    {

    return 0;

    }

    Lvalue v Rvalue trong C: C hai kiu Expression - Din t (Thnh ng) trong C :

    1. lvalue : Expression m ch ti v tr b nh l "lvalue". Mt lvalue c th xut hin hoc bn

    tri hoc bn phi ca mt php gn.

    2. rvalue : Lin quan ti gi tr d liu c lu tr ti mt s a ch trong b nh. Mt rvalue

    l mt expression m khng th c mt gi tr c gn ti n, ngha l mt rvalue c th

    xut hin bn phi nhng khng phi bn tri ca mt php gn.

    Cc bin l cc lvalue v thng xut hin cnh tri ca php gn. Cc hng s l s l rvalue

    v khng th c gn v khng th xut hin bn cnh tri ca php gn. Di y l mt khai

    bo hp l:

    int g = 20;

    Nhng sau y l mt khai bo khng hp l v s c thng bo li:

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 23

    10 = 20;

    Hng s trong C Hng s (constant) hng n nhng gi tr c nh m chng trnh khng th thay i trong qu

    trnh thc thi. Nhng gi tr c nh cng c gi l literals.

    Hng s c th l mt kiu d liu bt k no nh kiu d liu integer, float, character hay string.

    C nhng hng s kiu lit k (enumeration).

    Mt hng s c th c coi nh mt bin thng ngoi vic gi tr ca n khng th thay i sau

    khi c nh ngha.

    Hng s nguyn - Interger Gi tr integer c th l decimal, octal hoc hng s hexadecimal. Tin t (prefix) xc nh c bn

    hay c s: 0x hay 0X cho kiu hexadecimal (16), 0 cho octal (8), v khng c g l loi decimal.

    Mt gi tr hng s c th c phn kt thc (suffix) l s kt hp ca U v L, cho kiu Unsigned v

    kiu Long. Phn kt thc c th l ch hoa hoc ch thng theo bt c th t no.

    Di y l v d cho kiu hng s integer:

    212 /* Hp l */

    215u /* Hp l */

    0xFeeL /* Hp l */

    078 /* Khng hp l: 8 khng l k s octal */

    032UU /* Khng hp l: khng th lp li mt suffix */

    Di y l cc v d khc vi mt vi cch khai bo vi kiu integer:

    85 /* decimal */

    0213 /* octal */

    0x4b /* hexadecimal */

    30 /* int */

    30u /* unsigned int */

    30l /* long */

    30ul /* unsigned long */

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 24

    Hng s du chm ng Mt hng s du chm ng c mt phn integer, mt gi tr decimal, phn phn s v phn m.

    Bn c th biu din gi tr du chm ng trong kiu thp phn v kiu phn s.

    Khi biu din gi tr vi nh dng thp phn, bn phi thm phn integer, phn m hoc c hai.

    Phn m c vit bi e hoc E.

    Di y l vi v d cho phn du chm ng:

    3.14159 /* Legal */

    314159E-5L /* Legal */

    510E /* Illegal: incomplete exponent */

    210f /* Illegal: no decimal or exponent */

    .e55 /* Illegal: missing integer or fraction */

    Hng s k t Phn k t c ng m trong du nhy n ('), v d 'x' v c th c lu tr trong mt bin

    n gin kiu char.

    Mt k t c th l mt k t thng (v d 'x') hoc chui thot (e.g., '\t'), hoc mt k t ph

    thng (e.g., '\u02C0').

    C nhng k t c th trong C khi bt u bng du \ s c ngha c bit v c dng biu

    din dng mi (\n), tab mi (\t). Di y l danh sch cc k t c bit:

    Dy thot ngha

    \\ K t \

    \' K t '

    \" K t "

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 25

    \? K t ?

    \a Ting chung

    \b Backspace

    \f Form feed

    \n Dng mi

    \r Carriage return

    \t tab ngang

    \v tab dc

    \ooo S trong c s 8 ca 1 n 3 k s

    \xhh . . . S thp lc phn ca mt hoc nhiu k s

    Sau y l v d ch mt s k t dy thot:

    #include

    int main()

    {

    printf("Hello\tWorld\n\n");

    return 0;

    }

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 26

    Khi on trn trn c bin dch v thc thi, kt qu sau s c in ra:

    Hello World

    Hng s chui (string) Hng s chui c bao vi du ngoc kp . Mt chui bao gm cc k t tng t vi hng s

    k t: k t thun, chui thot v k t ph thng.

    Bn c th chia cc dng di thnh nhiu dng s dng cc gi tr chui v ngn cch chng bi

    cc khong trng.

    Di y l mt vi v d vi hng s chui. Ba chui di y c gi tr ging nhau:

    "hello, dear"

    "hello, \

    dear"

    "hello, " "d" "ear"

    nh ngha hng s C 2 cch n gin trong C nh ngha hng s:

    1. S dng b tin x l #define.

    2. S dng t kha const.

    S dng b tin x l #define Di y l mu s dng b tin x l #define nh ngha mt hng s:

    #define identifier value

    Di y l v d chi tit:

    #include

    #define LENGTH 10

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 27

    #define WIDTH 5

    #define NEWLINE '\n'

    int main()

    {

    int area;

    area = LENGTH * WIDTH;

    printf("value of area : %d", area);

    printf("%c", NEWLINE);

    return 0;

    }

    Khi on code trn c bin dch v thc hin. N s in ra kt qu sau y:

    value of area : 50

    S dng t kha const Bn c th s dng tin t const khai bo cc hng s vi mt kiu c th nh sau:

    const type variable = value;

    Di y l v d chi tit:

    #include

    int main()

    {

    const int LENGTH = 10;

    const int WIDTH = 5;

    const char NEWLINE = '\n';

    int area;

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 28

    area = LENGTH * WIDTH;

    printf("value of area : %d", area);

    printf("%c", NEWLINE);

    return 0;

    }

    Khi on code trn c bin dch v thc thi, n to ra kt qu sau:

    value of area : 50

    Ghi ch rng n l tt khi thc hnh nh ngha cc hng s trong CH HOA

    Lp lu tr trong C Mt lp lu tr nh ngha phm vi (nhn thy c) v thi gian tn ti ca mt bin hoc/v cc

    hm trong chng trnh C. Nhng c t i trc kiu c th c thay i. Di y l nhng

    lp lu tr, c th s dng trong chng trnh C.

    auto

    register

    static

    extern

    Lp lu tr auto Lp lu tr auto l lp lu tr mc nh cho tt c cc bin cc b:

    {

    int mount;

    auto int month;

    }

    V d trn nh ngha hai bin trong cng mt lp lu tr, auto c th c s dng bn trong

    hm, v d bin cc b.

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 29

    Lp lu tr register Lp lu tr register c th c s dng nh ngha bin cc b v c th c lu tr trong

    mt vng ng k thay v RAM. iu ny ngha l bin ny c c ti a tng ng vi c ng

    k.

    {

    register int miles;

    }

    Lp lu tr register ch c s dng cho bin m yu cu truy cp nhanh nh b m. Ch

    rng nh ngha register khng ng ngha vi bin c th lu tr trong mt thanh ghi. N

    ngha l c th lu tr trong thanh ghi ph thuc vo phn cng v vi cc hn ch nht nh.

    Lp lu tr static Lp lu tr static hng dn trnh bin dch gi cc gi tr bin local tn ti trong thi gian sng

    ca chng trnh thay v vic to ra v hy n mi ln chy qua phm vi . Do , to mt

    bin local tnh cho php chng lu tr cc gi tr vi cc hm gi.

    Lp static ny c th c p dng cho bin ton cc. Khi vic ny din ra, n gy ra phm vi ca

    bin c gii hn trong file m n khai bo.

    Trong lp trnh C, khi static c s dng ng vi lp, n dn n ch c mt bn copy ca lp

    khai bo c chia s bi tt c cc i tng s dng lp ny.

    #include

    /* function declaration */

    void func(void);

    static int count = 5; /* global variable */

    main()

    {

    while(count--)

    {

    func();

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 30

    }

    return 0;

    }

    /* function definition */

    void func( void )

    {

    static int i = 5; /* local static variable */

    i++;

    printf("i is %d and count is %d\n", i, count);

    }

    Bn c th khng hiu v d ny ny bi v bn c s dng bin ton cc, s c gii thiu bi

    ti. Khi on code c bin dch v thc hin, n cung cp kt qu sau:

    i is 6 and count is 4

    i is 7 and count is 3

    i is 8 and count is 2

    i is 9 and count is 1

    i is 10 and count is 0

    Lp lu tr extern Lp lu tr extern c s dng a tham chiu n cc bin ton cc m c nhn thy bi

    tt c cc file chng trnh.

    Khi bn c nhiu file v bn nh ngha cc bin cc b hoc hm, n s c s dng cc file

    khc. hiu vn ny, extern c s dng khai bo bin ton cc hoc hm file khc.

    T kha extern c s dng khi hai hoc nhiu file chia s chung mt bin hoc hm nh v d

    di y:

    File u tin: main.c

    #include

    int count ;

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 31

    extern void write_extern();

    main()

    {

    count = 5;

    write_extern();

    }

    File th 2: support.c

    #include

    extern int count;

    void write_extern(void)

    {

    printf("count is %d\n", count);

    }

    Di y extern l t kha c s dng khai bo count dng th hai ni n c nh

    ngha file th nht, main.c .By gi, bin dch 2 file nh sau:

    $gcc main.c support.c

    N s cung cp chng trnh thc thi a.out, khi chng trnh ny c chy s in ra kt qu sau

    y:

    5

    Ton t trong C Ton t l mt biu tng m ni vi trnh bin dch thc hin mt php ton hc nht nh hoc

    thao tc hp l. Ngn ng C c sn rt nhiu ton t v cung cp cc kiu ton t sau y:

    Ton t s hc

    Ton t quan h

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 32

    Ton t logic

    Ton t so snh bit

    Ton t gn

    Ton t hn hp

    Bi hng dn s gii thch ton t s hc, quan h, logic, so snh bit, gn v cc ton t khc,

    tng loi mt.

    Ton t s hc Bng di y ch ra tt c cc ton t s hc c h tr bi ngn ng C. Gi s bin A c gi

    tr 10 v bin B c gi tr 20:

    Hin th cc V d

    Ton

    t

    Miu t V d

    + Thm hai ton hng A + B s cho kt qu l

    30

    - Tr gi tr ton hng hai t ton hng u A - B s cho kt qu l -

    10

    * Nhn hai ton hng A * B s cho kt qu l

    200

    / Chia ly phn nguyn hai ton hng B / A s cho kt qu l 2

    % Chia ly phn d B % A s cho kt qu l

    0

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 33

    ++ Lng gia gi tr ton hng thm 1 n v A++ s cho kt qu l

    11

    -- Lng gim gi tr ton hng mt n v A-- s cho kt qu l 9

    Ton t quan h Bng di y ch ra tt c cc ton t quan h c h tr bi ngn ng C. Gi s rng

    bin A c gi tr 10 v bin B c gi tr 20, ta c:

    Hin th cc v d

    Ton

    t

    Miu t V d

    == Kim tra nu 2 ton hng bng nhau hay khng. Nu bng

    th iu kin l true.

    (A ==

    B) l

    khng

    ng.

    != Kim tra 2 ton hng c gi tr khc nhau hay khng. Nu

    khng bng th iu kin l true.

    (A !=

    B) l

    true.

    > Kim tra nu ton hng bn tri c gi tr ln hn ton hng

    bn phi hay khng. Nu ln hn th iu kin l true.

    (A >

    B) l

    khng

    ng.

    < Kim tra nu ton hng bn tri nh hn ton hng bn phi

    hay khng. Nu nh hn th l true.

    (A <

    B) l

    true.

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 34

    >= Kim tra nu ton hng bn tri c gi tr ln hn hoc bng

    gi tr ca ton hng bn phi hay khng. Nu ng l true.

    (A >=

    B) l

    khng

    ng.

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 35

    Ton t so snh bit Ton t so snh bit lm vic trn n v bit, tnh ton biu thc so snh tng bit. Bng di y v

    &, |, v ^ nh sau:

    p q p & q p | q p ^ q

    0 0 0 0 0

    0 1 0 1 1

    1 1 1 1 0

    1 0 0 1 1

    Gi s nu A = 60; v B = 13; th by gi trong nh dng nh phn chng s l nh sau:

    A = 0011 1100

    B = 0000 1101

    -----------------

    A&B = 0000 1100

    A|B = 0011 1101

    A^B = 0011 0001

    ~A = 1100 0011

    Cc ton t so snh bit c h tr bi ngn ng C c lit k trong bng di y. Gi s ta c

    bin A c gi tri 60 v bin B c gi tr 13, ta c:

    Hin th cc v d

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 36

    Ton

    t

    Miu t V d

    & Ton t AND (v) nh phn sao chp mt bit ti kt qu nu

    n tn ti trong c hai ton hng.

    (A &

    B) s

    cho

    kt

    qu

    l 12,

    tc l

    0000

    1100

    | Ton t OR (hoc) nh phn sao chp mt bit ti kt qu nu

    n tn ti trong mt hoc hai ton hng.

    (A |

    B) s

    cho

    kt

    qu

    l 61,

    tc l

    0011

    1101

    ^ Ton t XOR nh phn sao chp bit m n ch tn ti trong

    mt ton hng m khng phi c hai.

    (A ^

    B) s

    cho

    kt

    qu

    l 49,

    tc l

    0011

    0001

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 37

    ~ Ton t o bit (o bit 1 thnh bit 0 v ngc li). (~A )

    s

    cho

    kt

    qu

    l -

    61,

    tc l

    1100

    0011.

    Ton t dch phi. Gi tr ton hng tri c dch chuyn

    sang phi bi s cc bit c xc nh bi ton hng bn

    phi.

    A >>

    2 s

    cho

    kt

    qu

    l 15,

    tc l

    0000

    1111

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 38

    (dch

    sang

    phi

    hai

    bit)

    Ton t gn y l nhng ton t gn c h tr bi ngn ng C:

    Hin th cc v d

    Ton

    t

    Miu t V d

    = Ton t gn n gin. Gn gi tr ton hng bn phi cho

    ton hng tri.

    C = A

    + B s

    gn

    gi tr

    ca A

    + B

    vo

    trong

    C

    += Thm gi tr ton hng phi ti ton hng tri v gn gi tr

    cho ton hng tri.

    C +=

    A

    tng

    ng

    vi C

    = C +

    A

    -= Tr i gi tr ton hng phi t ton hng tri v gn gi tr C -= A

    tng

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 39

    ny cho ton hng tri. ng

    vi C

    = C -

    A

    *= Nhn gi tr ton hng phi vi ton hng tri v gn gi tr

    ny cho ton hng tri.

    C *= A

    tng

    ng

    vi C

    = C *

    A

    /= Chia ton hng tri cho ton hng phi v gn gi tr ny

    cho ton hng tri.

    C /= A

    tng

    ng

    vi C

    = C /

    A

    %= Ly phn d ca php chia ton hng tri cho ton hng

    phi v gn cho ton hng tri.

    C %=

    A

    tng

    ng

    vi C

    = C %

    A

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 40

    >= Dch phi ton hng tri sang s v tr l gi tr ton hng

    phi.

    C >>=

    2

    tng

    ng

    vi C

    = C

    >> 2

    &= Php AND bit C &=

    2

    tng

    ng

    vi C

    = C &

    2

    ^= Php OR loi tr bit C ^= 2

    tng

    ng

    vi C

    = C ^

    2

    |= Php OR bit. C |= 2

    tng

    ng

    vi C

    = C | 2

    Cc ton t hn hp sizeof & ternary C mt s ton t hn hp quan trng l sizeof v ? : c h tr bi ngn ng C.

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 41

    Hin th cc v d

    Ton

    t

    Miu t V d

    sizeof() Tr li kch c ca mt bin sizeof(a), vi a l

    integer, th s tr li kt

    qu l 4.

    & Tr li a ch ca mt bin. &a; s cho a ch thc

    s ca bin a.

    * Tr ti mt bin. *a; s tr ti bin a.

    ? : Biu thc iu kin Nu iu kin l true ?

    th gi tr X : Nu khng

    th gi tr Y

    Th t u tin ton t trong C Th t u tin ton t trong C xc nh cch biu thc c tnh ton. V d, ton t nhn c

    quyn u tin hn ton t cng, v n c thc hin trc.

    V d, x = 7 + 3 * 2; y, x c gn gi tr 13, ch khng phi 20 bi v ton t * c quyn u

    tin cao hn ton t +, v th u tin n thc hin php nhn 3 * 2 v sau thm vi 7.

    Bng di y lit k th t u tin ca cc ton t. Cc ton t vi quyn u tin cao nht xut

    hin trn cng ca bng, v cc ton t c quyn u tin thp nht th bn di cng ca bng.

    Trong mt biu thc, cc ton t c quyn u tin cao nht c tnh ton u tin.

    Hin th cc v d

    Loi Ton t Th t u tin

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 42

    Postfix () [] -> . ++ - - Tri sang phi

    Unary + - ! ~ ++ - - (type)* & sizeof Phi sang tri

    Tnh nhn * / % Tri sang phi

    Tnh cng + - Tri sang phi

    Dch chuyn > Tri sang phi

    Quan h < >= Tri sang phi

    Cn bng == != Tri sang phi

    Php AND bit & Tri sang phi

    Php XOR bit ^ Tri sang phi

    Php OR bit | Tri sang phi

    Php AND logic && Tri sang phi

    Php OR logic || Tri sang phi

    iu kin ?: Phi sang tri

    Gn = += -= *= /= %=>>=

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 43

    Du phy , Tri sang phi

    iu khin lung trong C Cc cu trc iu khin lung yu cu lp trnh vin xc nh mt hoc nhiu iu kin nh gi

    v kim tra bi chng trnh, cng vi cc lnh c thc hin nu iu kin c xc nh l

    ng, hoc cc lnh khc c thc hin nu iu kin xc nh l sai.

    Di y l mu chung ca mt cu trc iu khin lung hay gp trong ngn ng lp trnh.

    Ngn ng lp trnh C gi s rng mi gi tr khng phi zero hoc khng phi null u c gi

    tr true, nu c gi tr zero hoc null, n c gi tr false.

    Ngn ng C cung cp cc kiu cu trc iu khin lung sau. Bn nhn vo ng link bit

    thm chi tit v chng.

    Lnh Miu t

    Lnh if Mt lnh if bao gm mt biu thc

    logic theo sau bi mt hoc nhiu

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 44

    lnh khc.

    Lnh if...else Mt lnh if c th theo sau bi mt

    lnh else (ty : c hoc khng), m

    c th c thc hin khi biu thc

    logic c gi tr false.

    Cc lnh if c lng vo nhau Bn c th s dng lnh if hoc else

    if bn trong lnh if hoc else if khc.

    Lnh switch Mt lnh switch cho php kim tra

    iu kin ca mt bin trc khi

    thc thi cc lnh.

    Cc lnh switch c lng vo nhau Bn c th s dng mt

    lnh switch bn trong mt

    lnh switch khc.

    Ton t ? : Chng ta bn v ton t iu kin ? : trong chng trc m c th c dng i v tr

    cho lnh if...else. N c mu chung nh sau:

    Exp1 ? Exp2 : Exp3;

    Trong Exp1, Exp2 v Exp3 l cc biu thc. Ch vic s dng v t ca du hai chm.

    Gi tr ca biu thc Exp1 trc du ? c gi tr true, Exp2 c thc hin, v gi tr ca n l gi

    tr ca biu thc. Nu Exp1 l false th Exp3 c thc hin v gi tr ca n l gi tr ca biu

    thc.

    Vng lp trong C C mt tnh hung m bn cn phi thc hin mt on code mt vi ln. Nhn chung, cc cu

    lnh c thc hin mt cch tun t. Cu lnh u tin ca hm c thc hin trc, sau

    n cu th 2 v tip tc.

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 45

    Ngn ng lp trnh cung cp cho chng ta nhiu cu trc iu khin v cho php bn thc hin

    nhng phn phc tp.

    Vng lp cho php thc hin mt lnh v mt nhm lnh nhiu ln , di y l dng tng qut:

    C h tr nhng lnh iu khin sau y. Click chut vo link xem chi tit.

    Kiu vng lp Miu t

    Vng lp While Lp li mt hoc mt nhm cc lnh trong khi iu

    kin cho l ng. N kim tra iu kin trc khi

    thc hin thn vng lp.

    Vng lp for Thc thi mt dy cc lnh nhiu ln v tm tt on

    code m qun l bin vng lp.

    Vng lp do...while Ging lnh While, ngoi tr im l n kim tra

    iu kin cui thn vng lp.

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 46

    Lng cc vng lp Bn c th s dng mt hoc nhiu vng lp trong

    cc vng lp while, for hoc do..while khc.

    Cc lnh iu khin vng lp Cc lnh iu khin vng lp thay i s thc thi lnh t dy thng thng ca n. Khi s thc thi

    lnh ri khi mt phm vi, tt c cc i tng t ng m c to ra trong phm vi b hy.

    C h tr cc lnh iu khin vng lp sau y. Click vo cc ng link sau bit thm chi tit.

    Lnh iu khin Miu t

    Lnh break Kt thc vng lp hoc lnh switch v chuyn sang

    thc thi vng lp hoc lnh switch ngay sau n.

    Lnh continue Khi gp lnh ny th chng trnh s b qua cc cu

    lnh di n (trong cng mt cu lnh lp)

    thc hin vng lp mi.

    Lnh goto Chuyn ti lnh c gn. Mc d vy, n c

    khuyn rng khng nn s dng lnh goto trong

    chng trnh ca bn.

    Vng lp v hn Mt vng lp l vng lp v hn khi mt iu kin khng bao gi false. Vng lp for thng c

    s dng cho mc ch ny. Khi bn ba biu thc iu kin trong vng lp for trng th bn s

    to ra mt vng lp v hn.

    #include

    int main ()

    {

    for( ; ; )

    {

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 47

    printf("This loop will run forever.\n");

    }

    return 0;

    }

    Khi biu thc iu kin vng mt, n c gi s l lun ng.

    Ghi ch: Bn c th dng (kt thc) mt vng lp v hn bi nhn t hp phm Ctrl + C.

    Hm trong C Mt hm l mt nhm cc lnh i cng nhau thc hin mt nhim v. Mi chng trnh C c t

    nht mt hm l hm main(), v tt c hu ht cc chng trnh bnh thng u nh ngha thm

    cc hm.

    Bn c th chia on code ca bn thnh nhng hm ring bit. Cch bn chia on code ca bn

    thnh cc hm khc nhau ph thuc vo bn, nhng theo tnh logic, mt hm thng c mt

    nhim v nht nh.

    Mt s khai bo hm thng bo vi b bin dch v tn ca hm, kiu tr v v tham s. Mt nh

    ngha hm cung cp phn thn ca mt hm.

    Cc th vin tiu chun ca ngn ng C cung cp rt nhiu hm c sn chng trnh ca bn

    c th gi. V d, hm strcat() c th ni hai on chui, hm memcpy() dng copy mt vng

    nh n mt vng nh khc v rt nhiu hm khc na.

    Mt hm c bit n vi cc tn khc nhau nh mt phng thc, mt tuyn ph hoc mt th

    tc.

    nh ngha mt hm Mu chung ca nh ngha hm trong Ngn ng C nh sau:

    kieu_tra_ve ten_ham( danh_sach_tham_so )

    {

    than_cua_ham

    }

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 48

    Mt nh ngha hm trong ngn ng C bao gm u hm v mt thn hm. Di y l cc phn

    ca mt hm:

    Kiu tr v: Mt hm c th tr v mt gi tr. Kieu_tra_ve l dng d liu ca gi tr m

    hm tr v. Vi hm cung cp cc hot ng v khng tr v gi tr no c. l

    hm void.

    Tn hm: y l tn thc s ca hm. Tn hm v danh sch tham s cu to nn du

    hiu hm.

    Tham s: Khi hm c gi, bn phi truyn vo danh sch cc tham s. Mt gi tr hng

    n mt tham s thc t. Danh sch tham s c cc kiu, th t v s lng cc tham s

    ca hm. Cc tham s trong hm l ty chn, ngha l mt hm c th khng c tham s.

    Thn hm: Phn thn ca mt hm bao gm tp hp cc lnh xc nh nhng g m hm

    thc hin.

    V d: Sau y l m ngun cho mt hm c tn gi l max(). Hm ny c 2 tham s: num1 v num2 v

    tr v gi tr ln nht gia hm s:

    /* function returning the max between two numbers */

    int max(int num1, int num2)

    {

    /* local variable declaration */

    int result;

    if (num1 > num2)

    result = num1;

    else

    result = num2;

    return result;

    }

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 49

    Khai bo hm Mt khai bo hm thng bo cho trnh bin dch v tn hm v cch gi ca hm. Phn thn hm

    c th nh ngha mt cch ri rc.

    Mt khai bo hm c cc phn sau y:

    return_type function_name( parameter list );

    V d khi nh ngha hm max(), di y l cu khai bo hm:

    int max(int num1, int num2);

    Tn cc tham s khng quan trng trong vic khai bo hm, nhng kiu di y l cch khai bo

    hp l:

    int max(int, int);

    Mt khai bo hm c yu cu khi bn nh ngha mt hm v m ngun v khi gi mt hm t

    mt file ngun khc. Trong trng hp ny, bn nn khai bo hm trc khi gi hm .

    Gi hm Trong khi to mt hm, bn nh ngha nhng g hm phi lm. s dng mt hm, bn phi gi

    hm thc hin mt nhim v c th.

    Khi mt chng trnh gi mt hm, phn iu khin c chuyn n hm c gi. Mt hm

    c gi thc hin cc nhim v c nh ngha v tr v gi tr sau khi thc hin chng trnh.

    gi hm, bn n gin cn truyn cc tham s c yu cu cng vi tn ca hm v nu hm

    tr v cc gi tr, bn c th d tr cc gi tr tr v ny, v d:

    #include

    /* function declaration */

    int max(int num1, int num2);

    int main ()

    {

    /* local variable definition */

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 50

    int a = 100;

    int b = 200;

    int ret;

    /* calling a function to get max value */

    ret = max(a, b);

    printf( "Max value is : %d\n", ret );

    return 0;

    }

    /* function returning the max between two numbers */

    int max(int num1, int num2)

    {

    /* local variable declaration */

    int result;

    if (num1 > num2)

    result = num1;

    else

    result = num2;

    return result;

    }

    Ti gi gi tr hm max() trong hm main vo bin ret. Khi chng trnh c chy, n s in ra kt

    qu sau y:

    Max value is : 200

    Tham s ca hm: Mt hm s dng cc danh sch tham s, n phi khai bo cc bin v chp nhn gi tr cc bin

    ny. Cc bin ny c gi l cc bin chnh thc.

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 51

    Cc bin chnh thc ging cc bin cc b khc bn trong hm.

    Khi bn gi hm, c 2 cch bn truyn cc gi tr vo cho hm:

    Kiu gi Miu t

    Gi bi gi tr Phng thc ny sao chp gi tr thc s ca tham

    s vo trong tham s chnh thc ca mt hm.

    Trong trng hp ny, cc thay i ca bn thn

    cc tham s bn trong hm khng nh hng ti

    cc tham s.

    Gi bi tham chiu Phng thc ny sao chp a ch ca tham s vo

    trong tham s chnh thc. Bn trong hm, a ch

    c dng truy cp tham s thc s c s

    dng khi gi hm. C ngha l cc thay i ti tham

    s lm tham s thay i.

    Theo mc nh, C s dng gi bi gi tr truyn cc tham s. Nhn chung, code trong mt

    hm khng th thay i cc tham s c dng gi hm v trong v d trn, khi gi hm

    max() l dng phng thc tng t.

    Quy tc phm vi trong C Mt phm vi trong bt k chng trnh no l mt khu vc trong chng trnh ni mt bin c

    nh ngha tn ti v bn ngoi phm vi th bin khng th c truy cp. C 3 ni m bin c

    th c khai bo trong Ngn ng C:

    1. Bn trong mt hm hoc mt khi code c gi l bin local.

    2. Bn ngoi tt c cc hm v c gi l bin ton cc.

    3. Trong nh ngha cc hm, cc tham s c gi l cc tham s chnh thc - formal.

    By gi chng ta cng tm hiu cc bin cc b v bin ton cc v cc tham s chnh thc l

    g.

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 52

    Bin cc b Bin cc b c khai bo bn trong mt hm hoc khai bo bn trong mt khi code. Chng

    c s dng bi cc lnh trong hm hoc khi code . Bin cc b khng c s dng bn

    ngoi ca hm. Di y l v d v vic s dng bin cc b. Ti y bin a,b v c c s dng

    trong hm main():

    #include

    int main ()

    {

    /* local variable declaration */

    int a, b;

    int c;

    /* actual initialization */

    a = 10;

    b = 20;

    c = a + b;

    printf ("value of a = %d, b = %d and c = %d\n", a, b, c);

    return 0;

    }

    Bin ton cc Bin ton cc c nh ngha bn ngoi mt hm, thng l phn u ca chng trnh. Bin

    ton cc c th cha cc gi tr trong thi gian chng trnh chy v c th c truy cp bi bt

    k hm no nh ngha trong chng trnh.

    Mt bin ton cc c th c truy cp bi bt k hm no. iu ngha l bin ton cc c

    s dng sut chng trnh sau khi n khai bo. Di y l v d minh ha cho bin cc b v

    ton cc:

    #include

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 53

    /* global variable declaration */

    int g;

    int main ()

    {

    /* local variable declaration */

    int a, b;

    /* actual initialization */

    a = 10;

    b = 20;

    g = a + b;

    printf ("value of a = %d, b = %d and g = %d\n", a, b, g);

    return 0;

    }

    Mt chng trnh c th c bin ton cc v local trng tn. Trong trng hp bin cc b bn

    trong hm s c u tin s dng. Di y l v d:

    #include

    /* global variable declaration */

    int g = 20;

    int main ()

    {

    /* local variable declaration */

    int g = 10;

    printf ("value of g = %d\n", g);

    return 0;

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 54

    }

    Khi chng trnh c bin dch v chy, kt qu sau s in ra:

    value of g = 10

    Tham s chnh thc Tham s hm, tham s chnh thc c coi nh bin local bn trong hm v thng c gi

    tr u tin hn bin ton cc. Di y l v d:

    #include

    /* global variable declaration */

    int a = 20;

    int main ()

    {

    /* local variable declaration in main function */

    int a = 10;

    int b = 20;

    int c = 0;

    printf ("value of a in main() = %d\n", a);

    c = sum( a, b);

    printf ("value of c in main() = %d\n", c);

    return 0;

    }

    /* function to add two integers */

    int sum(int a, int b)

    {

    printf ("value of a in sum() = %d\n", a);

    printf ("value of b in sum() = %d\n", b);

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 55

    return a + b;

    }

    Khi on code trn c bin dch v thc hin, kt qu di y s c in ra:

    value of a in main() = 10

    value of a in sum() = 10

    value of b in sum() = 20

    value of c in main() = 30

    Khi to bin ton cc v bin cc b Khi bin ton cc v bin cc b c nh ngha, n khng c khi to bi chng trnh, n

    phi khi to bi chnh bn thn bn. Bin ton cc thng khi to t ng bi chng trnh khi

    bn nh ngha chng nh di y:

    Kiu d liu Gi tr khi to mc nh

    int 0

    char '\0'

    float 0

    double 0

    pointer NULL

    Thng trong thc t lp trnh bn nn khi to cc gi tr bin mt cch chnh xc, nu khng

    chng trnh ca bn c th gy ra nhng kt qu khng mong mun .

    Mng trong Ngn ng C

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 56

    Ngn ng lp trnh C cung cp cu trc d liu gi l mng, c lu tr trong mt tp hp cc

    d liu cng kiu vi di c nh. Mt mng c s dng lu tr tp hp d liu, nhng n

    rt hu dng nu bn ngh v mt mng cc bin vi cng mt kiu.

    Thay v khai bo bin mt cch ri rc, nh bin number0, number1, v number99, bn c th

    khai bo mt mng cc gi tr nh numbers[0], numbers[1] v numbers[99] biu din cc gi

    tr ring bit. Mt thnh phn c th ca mng c th c truy cp qua index (ch s).

    Tt c mng u bao gm cc v tr nh lin k nhau. a ch thp nht tng ng vi thnh phn

    u tin v a ch cao nht tng ng vi thnh phn cui cng ca mng.

    Khai bo mng trong C khai bo mt mng trong ngn ng C, chng trnh xc nh kiu ca bin v s lng cc

    phn t c yu cu bi bin nh sau:

    Kieu Ten_mang [ Kich_co_mang ];

    y l mng mt chiu. Kich_co_mang phi l mt s nguyn ln hn 0 v Kieu phi hp l

    trong ngn ng C. V d, khai bo mt mng 10 phn t gi l balance vi kiu double, s dng

    cu lnh sau y:

    double balance[10];

    By gi balance l mt bin mng c th ch cha 10 phn t double.

    Khi to mng trong C Bn c th khi to mng trong C hoc tng phn t mt hoc s dng mt cu lnh nh di

    y:

    double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};

    S lng cc gi tr trong du ngoc kp {} khng c ln hn s lng phn t khai bo trong

    du ngoc vung [].

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 57

    Nu bn b st kch c mng th mng ln gi cc gi tr c khi to:

    double balance[] = {1000.0, 2.0, 3.4, 7.0, 50.0};

    Bn s to chnh xc mt chui c gi tr ging ht chui bn trn bng cch gn tng phn t

    mt. Di y l mt v d khi gn gi tr cho mt phn t ca mng:

    balance[4] = 50.0;

    Cu lnh bn trn gn gi tr th 5 ca mng gi tr 50.0. Tt c cc mng u c ch s (index)

    u tin bng 0, y c gi l ch s c bn v phn t cui cng ca mng c ch s bng

    ln ca mng tr i 1. Di y l cch biu din hnh ha cho chui khai bo bn trn thng qua

    ch s:

    Truy cp cc phn t mng trong C Mt mng c truy cp bi cch nh ch s trong tn ca mng. Di y l mt cch truy cp

    mt gi tr ca mng:

    double salary = balance[9];

    Cu lnh trn ly phn t th 10 ca mng v gn gi tr ny cho bin salary. Di y l mt v

    d v vic s dng vi tt c m t bn trn:

    #include

    int main ()

    {

    int n[ 10 ]; /* n is an array of 10 integers */

    int i,j;

    /* initialize elements of array n to 0 */

    for ( i = 0; i < 10; i++ )

    {

    n[ i ] = i + 100; /* set element at location i to i + 100 */

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 58

    }

    /* output each array element's value */

    for (j = 0; j < 10; j++ )

    {

    printf("Element[%d] = %d\n", j, n[j] );

    }

    return 0;

    }

    Khi on code ny c bin dch v thc hin, kt qu sau y s c in ra:

    Element[0] = 100

    Element[1] = 101

    Element[2] = 102

    Element[3] = 103

    Element[4] = 104

    Element[5] = 105

    Element[6] = 106

    Element[7] = 107

    Element[8] = 108

    Element[9] = 109

    Chi tit v mng trong C Mng l mt phn rt quan trng trong ngn ng C. Di y l nhng nh ngha quan trng lin

    quan n mt mng c th m c trnh by r rng hn cho cc lp trnh vin C:

    Khi nim Miu t

    Mng a chiu trong C C h tr cc mng a

    chiu. Mu n gin nht

    ca mng ny l mng hai

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 59

    chiu.

    Truyn mng cho hm nh l tham s trong C Bn c th truyn ti hm

    mt im tr ch ti mt

    mng bi xc nh tn

    mng ch khng phi l

    mt ch s.

    Tr v mng t mt hm trong C C cho php mt hm c th

    tr v mt mng.

    Tr ti mt mng trong C Bn c th tr ti phn t

    u tin ca mng mt

    cch n gin ch bi xc

    nh tn mng , ch

    khng phi mt ch s.

    Con tr trong C Con tr - Pointer trong ngn ng C rt d hc. Mt vi tc v trong ngn ng C c thc hin d

    dng hn nh con tr, v nhng tc v khc tr nn linh hot hn, nh trong vic cp pht b

    nh, khng th thc hin m khng dng con tr. Do rt cn thit phi nm vng con tr khi tr

    thnh mt lp trnh vin C hon thin. By gi hy bt u bng nhng bc n gin nht.

    Nh bn bit, mi bin trong mt vng nh nht nh v mi vng nh ny c a ch c n c

    nh ngha d dng trong vic truy cp s dng ton t (&), tng ng vi a ch ca n trong

    b nh. Xem xt v d di y, s in ra a ch ca bin c nh ngha:

    #include

    int main ()

    {

    int var1;

    char var2[10];

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 60

    printf("Address of var1 variable: %x\n", &var1 );

    printf("Address of var2 variable: %x\n", &var2 );

    return 0;

    }

    Khi cc on code trn c bin dch v thc hin, n s in ra kt qu sau y:

    Address of var1 variable: bff5a400

    Address of var2 variable: bff5a3f6

    Do bn hiu th no l a ch b nh v cch truy cp n, l phn nh ngha c bn. By

    gi hy xem th no l mt con tr.

    Con tr l g? Mt con tr - pointer l mt bin m trong gi tr ca n l a ch ca bin khc. V d nh a

    ch ca vng nh. Ging nh cc bin v hng s, bn phi khai bo con tr trc khi bn c th

    s dng n lu tr bt k a ch ca bin no. Dng tng qut ca vic khai bo con tr nh

    sau:

    type *var-name;

    y, type l kiu d liu c bn con tr, n l kiu hp l trong ngn ng C v var-namel tn

    gi tr ca con tr. Phn k t * s dng trong khai bo con tr ging nh vic bn s dng cho

    php nhn. Mc d vy, trong khai bo ny, k t * c thit k s dng cc bin ca con tr.

    Di y l mt s cch khai bo hp l ca con tr:

    int *ip; /* pointer to an integer */

    double *dp; /* pointer to a double */

    float *fp; /* pointer to a float */

    char *ch /* pointer to a character */

    Ki d liu thc s ca gi tr ca tt c cc con tr, c th l integer, float, character, hoc kiu

    khc, l ging nh, mt s thp lc phn di - Long hexa biu din mt a ch b nh. im khc

    nhau duy nht ca cc con tr ca cc kiu d liu khc nhau l kiu d liu ca bin hoc hng

    s m con tr ch ti.

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 61

    Cch s dng con tr? C mt vi php ton quan trng, s gip chng ta lm vic vi con tr mt cch thng

    xuyn: a) chng ta nh ngha bin con tr, b) gn a ch ca bin n mt con tr v c)cui cng

    truy cp cc gi tr bin a ch trong bin con tr. iu ny c thc hin bi ton t * tr v gi

    tr cc cc bin cha trong a ch c xc nh bi ton t ny. Di y l cc s dng nhng

    php ton trn:

    #include

    int main ()

    {

    int var = 20; /* actual variable declaration */

    int *ip; /* pointer variable declaration */

    ip = &var; /* store address of var in pointer variable*/

    printf("Address of var variable: %x\n", &var );

    /* address stored in pointer variable */

    printf("Address stored in ip variable: %x\n", ip );

    /* access the value using the pointer */

    printf("Value of *ip variable: %d\n", *ip );

    return 0;

    }

    Khi on code trn c bin dch v thc hin, chng trnh s in ra kt qu di y:

    Address of var variable: bffd8b3c

    Address stored in ip variable: bffd8b3c

    Value of *ip variable: 20

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 62

    Con tr NULL trong ngn ng C C mt cch thc hnh tt khi chng ta gn gi tr NULL cho bin con tr trong trng hp bn

    khng c a ch chnh xc c gn. iu ny thng xy ra trong qu trnh khai bo. Mt con

    tr c gn gi tr NULL c gi l con tr null.

    Con tr null l mt hng s vi gi tr 0 c nh ngha trong mt vi th vin chun. Xem chng

    trnh di y:

    #include

    int main ()

    {

    int *ptr = NULL;

    printf("The value of ptr is : %x\n", ptr );

    return 0;

    }

    Khi on code trn c bin dch v thc hin, n s in ra kt qu sau y:

    The value of ptr is 0

    Trong hu ht cc h thng, chng trnh khng cho php truy cp v nh c a ch 0 bi v b

    nh ny dng d tr cho h iu hnh. Nu con tr ti gi tr null, n c coi l khng tr ti

    u c.

    kim tra c phi l con tr null hay khng bn c th s dng lnh if nh sau:

    if(ptr) /* succeeds if p is not null */

    if(!ptr) /* succeeds if p is null */

    Chi tit v con tr: Con tr c nhiu nhng d dng trong vic nh ngha v rt quan trng trong lp trnh ngn ng C.

    Di y l nhng nh ngha quan trng m r rng v con tr trong ngn ng lp trnh C:

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 63

    Khi nim Miu t

    Con tr i s trong C C 4 ton t i s m c th c

    s dng trn cc con tr l: ++, --, +, -

    Mng cc con tr trong C Bn c th nh ngha cc mng

    gi cc con tr.

    Con tr ti con tr trong C C cho php bn tr ti mt con tr ...

    Truyn cc con tr ti hm trong C Truyn mt tham s bi tham chiu

    hoc a ch: c hai cho cc tham s

    c truyn kh nng c th c

    thay i trong hm gi bi hm c

    gi.

    Tr v con tr t hm trong C C cho php mt hm tr v mt con

    tr ti bin cc b, bin tnh v cng

    nh b nh c cp pht ng.

    Chui trong C Chui trong ngn ng lp trnh C thc cht l mng mt chiu ca cc k t m kt thc bi mt

    k t null \0.

    Phn khai bo v khi to di y to ra mt chui bao gm mt t Hello. gi cc gi tr null

    ti cui ca mng, c ca mng cc k t bao gm mt chui phi nhiu hn s lng cc k t

    trong t kha Hello.

    char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

    Nu bn theo quy tc khi to cc chui, bn c th vit lnh nh sau:

    char greeting[] = "Hello";

    Di y l phn biu din nh cho on chui trn trong ngn ng C/C++:

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 64

    Thc t, bn khng t k t null ti v tr cui cng ca bin hng s. B bin dch C t ng

    thm \0 ti v tr cui cng ca chui khi n khi to chui. Cng th v d in ra chui sau y:

    #include

    int main ()

    {

    char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

    printf("Greeting message: %s\n", greeting );

    return 0;

    }

    Khi on code trn c bin dch v thc hin, kt qu in ra s nh sau:

    Greeting message: Hello

    Ngn ng C h tr mt dy rng ri cc hm thao tc cc chui kt thc l null:

    STT Hm & Mc ch

    1 strcpy(s1, s2);

    Sao chp chui s2 cho chui s1.

    2 strcat(s1, s2);

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 65

    Ni chui s2 vo cui chui s1.

    3 strlen(s1);

    Tr v di ca chui s1.

    4 strcmp(s1, s2);

    Tr v 0 nu s1 v s2 l nh nhau; nh hn 0 nu s1s2.

    5 strchr(s1, ch);

    Tr v con tr ti v tr u tin ca ch trong s1.

    6 strstr(s1, s2);

    Tr v con tr ti v tr u tin ca chui s2 trong chui s1.

    Di y l v d cho vic s dng mt vi hm bn trn:

    #include

    #include

    int main ()

    {

    char str1[12] = "Hello";

    char str2[12] = "World";

    char str3[12];

    int len ;

    /* copy str1 into str3 */

    strcpy(str3, str1);

    printf("strcpy( str3, str1) : %s\n", str3 );

    /* concatenates str1 and str2 */

    strcat( str1, str2);

    printf("strcat( str1, str2): %s\n", str1 );

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 66

    /* total lenghth of str1 after concatenation */

    len = strlen(str1);

    printf("strlen(str1) : %d\n", len );

    return 0;

    }

    Khi on code trn c bin dch v thc hin, kt qu di y s c in ra:

    strcpy( str3, str1) : Hello

    strcat( str1, str2): HelloWorld

    strlen(str1) : 10

    Bn c th tm thy mt danh sch y cc hm lin quan ti chui trong Th vin tiu chun

    C.

    Cu trc trong C Cc mng trong C cho php bn nh ngha mt vi loi bin c th gi gi tr ca mt vi thnh

    phn cng kiu d liu. Nhng structure - cu trc l mt loi d liu khc trong ngn ng lp

    trnh C, cho php bn kt hp cc d liu khc kiu nhau.

    Cu trc c s dng biu din mt bn ghi. Gi s bn mun lu tr gi tr ca mt quyn

    sch trong th vin ca bn. Bn c th lu tr cc thuc tnh ca sch sau y:

    Title

    Author

    Subject

    Book ID

    nh ngha mt cu trc nh ngha cu trc, bn phi s dng cu lnh struct. Cu lnh struct nh ngha mt kiu d

    liu mi, vi hn mt thnh phn trong chng trnh ca bn. Dng tng qut ca cu lnh struct

    nh sau y:

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 67

    struct [structure tag]

    {

    member definition;

    member definition;

    ...

    member definition;

    } [one or more structure variables];

    Mt th cu trc c th ty chn v mt thnh phn nh ngha l cc bin thng nh int i, float j

    hoc mt nh ngha bin khc . Ti phn cui cng ca nh ngha cu trc, trc du chm

    phy, bn c th xc nh mt hoc nhiu bin cu trc (ty chn). Di y l cch khai bo bin

    structure Book:

    struct Books

    {

    char title[50];

    char author[50];

    char subject[100];

    int book_id;

    } book;

    Truy cp cc thnh phn ca cu trc truy cp bt k thnh phn no ca cu trc, bn s dng ton t truy cp phn t. Di y

    l v d cho cch s dng cu trc:

    #include

    #include

    struct Books

    {

    char title[50];

    char author[50];

    char subject[100];

    int book_id;

    };

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 68

    int main( )

    {

    struct Books Book1; /* Declare Book1 of type Book */

    struct Books Book2; /* Declare Book2 of type Book */

    /* book 1 specification */

    strcpy( Book1.title, "C Programming");

    strcpy( Book1.author, "Nuha Ali");

    strcpy( Book1.subject, "C Programming Tutorial");

    Book1.book_id = 6495407;

    /* book 2 specification */

    strcpy( Book2.title, "Telecom Billing");

    strcpy( Book2.author, "Zara Ali");

    strcpy( Book2.subject, "Telecom Billing Tutorial");

    Book2.book_id = 6495700;

    /* print Book1 info */

    printf( "Book 1 title : %s\n", Book1.title);

    printf( "Book 1 author : %s\n", Book1.author);

    printf( "Book 1 subject : %s\n", Book1.subject);

    printf( "Book 1 book_id : %d\n", Book1.book_id);

    /* print Book2 info */

    printf( "Book 2 title : %s\n", Book2.title);

    printf( "Book 2 author : %s\n", Book2.author);

    printf( "Book 2 subject : %s\n", Book2.subject);

    printf( "Book 2 book_id : %d\n", Book2.book_id);

    return 0;

    }

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 69

    Khi on code trn c bin dch v thc hin. Kt qu sau y c in ra:

    Book 1 title : C Programming

    Book 1 author : Nuha Ali

    Book 1 subject : C Programming Tutorial

    Book 1 book_id : 6495407

    Book 2 title : Telecom Billing

    Book 2 author : Zara Ali

    Book 2 subject : Telecom Billing Tutorial

    Book 2 book_id : 6495700

    Cc cu trc nh cc tham s hm Bn c th t cu trc nh mt tham s ca hm theo cch d dng nh cc bin khc hay con

    tr. Truy cp bin cu trc nh v d di y:

    #include

    #include

    struct Books

    {

    char title[50];

    char author[50];

    char subject[100];

    int book_id;

    };

    /* function declaration */

    void printBook( struct Books book );

    int main( )

    {

    struct Books Book1; /* Declare Book1 of type Book */

    struct Books Book2; /* Declare Book2 of type Book */

    /* book 1 specification */

  • http://vietjack.com/cprogramming/index.jsp Copyright vietjack.com

    http://vietjack.com/ Trang chia s cc bi hc online min ph Trang 70

    strcpy( Book1.title, "C Programming");

    strcpy( Book1.author, "Nuha Ali");

    strcpy( Book1.subject, "C Programming Tutorial");

    Book1.book_id = 6495407;

    /* book 2 specification */

    strcpy( Book2.title, "Telecom Billing");

    strcpy( Book2.author, "Zara Ali");

    strcpy( Book2.subject, "Telecom Billing Tutorial");

    Book2.book_id = 6495700;

    /* print Book1 info */

    printBook( Book1 );

    /* Print Book2 info */

    printBook( Book2 );

    return 0;

    }

    void printBook( struct Books book )

    {

    printf( "Book title : %s\n", book.title);

    printf( "Book author : %s\n", book.author);

    printf( "Book subject : %s\n", book.subject);

    printf( "Book book_id : %d\n", book.book_id);

    }