Download - Tài Liệu Lập Trình C Tiếng Việt
-
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);
}