Bài giảng nhập môn lập trình con trỏ, chuỗi trần phước tuấn - Pdf 33

NMLT
CON TR , CHU I
Tr n Ph

c Tu n




Con tr – Pointer
Khai báo
Các toá
toán t “&”, “*”, “=”, “+”
Nh c l i v truy n tham s
a ch
Con tr và m ng
C p phát vùng nh
ng

NH P MÔN L P TRÌNH

12/23/2009

2


Con tr – M t s lý do nên s d ng
Con tr là ki u d li u l u tr
a ch c a các vùng
d li u trong b nh máy tính
Ki u con tr cho phép:


typedef ki uc s
typedef

nh ngh a trên m t ki u c s

*Tênki u;
*PINT;
a ch vùng nh ki u int

x;
p; //p, p1: bi n ki u int *
*p1;
12/23/2009

4


Con tr – Khai báo trong C
int
int

*pi;
*pi;

long
long int
int *p;
*p;
float*


char
char

/*
/* pd
pd là

ee and
and

con
nn double
con tr
tr
double
ff are
are double
double */
*/

*start,
*start, *end;
*end;

NH P MÔN L P TRÌNH

5

12/23/2009

}}
NH P MÔN L P TRÌNH

p
0x1132
p
0x91A2

12/23/2009

c
0x1132

'a'

g
0x91A2

'z'

6


Con tr - Toán t “*”
“*”: toán t truy xu t giá tr c a vùng nh
b i con tr .
#include
#include <stdio.h>
<stdio.h>
char

0x1132
aa
zz

*p);
*p);

NH P MÔN L P TRÌNH

0x1132

'a'

g

p
0x91A2

*p);
*p);

c

0x91A2

'z'

xu t giá tr do p ang
qu n lý


return
0;
return 0;
}}
void
voidchange(int
change(int *v)
*v)
{{
(*v)
(*v) *=
*= 100;
100;
printf("change:
printf("change: *v
*v == %i\n",
%i\n", (*v));
(*v));
}}
NH P MÔN L P TRÌNH

12/23/2009

8


Con tr NULL
Giá tr
c bi t
ch r ng con tr không qu n lý vùng

printf(“Giá tr
tr :: %hi\n",
%hi\n",
return
0;
return 0;
}}
NH P MÔN L P TRÌNH

ll !\n");
!\n");
*p);
*p);

9

12/23/2009

Con tr - Toán t gán “=”
Có s khác bi t r t quan tr ng khi th c hi n các phép gán:
int
int ii == 10,
10, jj == 14;
14;
int*
int* pp == &i;
&i;
int
*q
=

=
&i;
*p = &i;
*q
*q == &j;
&j;

pp == q;
q;
NH P MÔN L P TRÌNH

p 0x15A4
0x15A0
q
0x15A4
12/23/2009

i
0x15A0
j
0x15A4

10
14
10


Luy n t p – i n vào ô tr ng
int
int main(void)

*q;
return
return 0;
0;

i
0x2100
j
0x2104
k
0x1208
p
0x120B
q
0x1210

}}
NH P MÔN L P TRÌNH

11

12/23/2009

Con tr và M ng
Bi n ki u m ng là a ch t nh c a m t vùng nh ,
c xác
nh khi khai báo, không thay i trong su t chu k s ng.
Bi n con tr là a ch
ng c a m t vùng nh ,
c xác

a, a[0], p, *p);
*p);
return
0;
return 0;
}}
NH P MÔN L P TRÌNH

12/23/2009

0};
0};

%i\n“,
%i\n“, );
);

12


Con tr - Toán t “+” v i s nguyên
#include
#include <stdio.h>
<stdio.h>
int
main()
int main()
{{
short
short a[10]

p,
*p);
a, a[0], p, *p);
(*p)
++;
(*p) ++;
printf(“0x%04X
printf(“0x%04X %i
%i 0x%04X
0x%04X %i\n“,
%i\n“,
a,
a[0],
p,
*p);
a, a[0], p, *p);
return
0;
return 0;
}}
NH P MÔN L P TRÌNH

0x15A0
a
1
4
3
5
2


int a[10]
a[10] == {2,
{2, 3,
3, 5,
5, 1,
1, 4,
4, 7,
7, 0};
0};
int
*p
=
a;
int *p = a;
printf(“%i
printf(“%i %i\n“,
%i\n“, a[0],
a[0], *p);
*p);
pp ++;
++;
printf(“%i
printf(“%i %i\n“,
%i\n“, *p,
*p, p[2]);
p[2]);
pp ++;
a[2]
=
9;

33

14


Con tr - C p phát vùng nh

ng

Có th ch nh vùng m i cho 1 con tr qu n lý b ng các
l nh hàm malloc, calloc ho c toán t new c a C++
Vùng nh do l p trình viên ch nh ph i
c gi i phóng
b ng l nh free (malloc, calloc) ho c toán t delete (new)
#include
#include <stdio.h>
<stdio.h>
int
main()
int main()
{{
int
int *p
*p == new
new int[10];
int[10];
p[0]
=
1;
p[0] = 1;


12/23/2009

16


Chu i ký t - String

Chu i ký t – Strings
M t s qui t c
Nh p / xu t
Con tr và chu i ký t
M t s hàm th vi n

NH P MÔN L P TRÌNH

12/23/2009

18


Chu i ký t - M t s qui t c
Chu i ký t là m ng m t chi u có m i thành ph n là m t
s nguyên
c k t thúc b i s 0.
Ký t k t thúc (0) cu i chu i ký t th ng
c g i là
ký t null (không gi ng con tr NULL). Có th ghi là 0
ho c ‘\0’ (không ph i ch o).
c khai bá

char last_name[6]
last_name[6] == "Minor";
"Minor";
char
char other[]
other[]

== "Tony
"Tony Blurt";
Blurt";

char
char characters[7]
characters[7] == "No
"No null";
null";
first_name

'J'

'o'

'h'

'n'

0

last_name



'l'

12/23/2009

'l'

'u'

'l'

0

'r'

't'

0

20


Chu i ký t - Nh p / xu t
Có th nh p / xu t chu i ký t s b ng cách nh p t ng ký
t c as
Ho c s d ng các hàm scanf và printf v i ký t
nh
d ng “%s”
char
char other[]

#include <stdio.h>
<stdio.h>
int
int main()
main()
{{
char
char other[]
other[] == "Tony
"Tony Blurt";
Blurt";

"Blurt" s không
c in ra

printf("%s\n",
printf("%s\n", other);
other);
other[4]
other[4] == '\0';
'\0';
printf("%s\n",
printf("%s\n", other);
other);

Tony
Tony Blurt
Blurt
Tony
Tony


ng

strlwr(s);

NH P MÔN L P TRÌNH

12/23/2009

23

Chu i ký t – M t s hàm th vi n
So sánh chu i: so sánh theo th t t
Phân bi t IN HOA – in th

i n

ng:

int strcmp(const char *s1, const char *s2);
Không phân bi t IN HOA – in th ng:
int stricmp(const char *s1, const char *s2);

NH P MÔN L P TRÌNH

12/23/2009

24



printf("%s
printf("%s > %s",
%s", s1,
s1, s2);
s2);
return
0;
return 0;
}}
NH P MÔN L P TRÌNH


int main()
main()
{{
char
char s[]
s[] == "Tony
"Tony Blurt";
Blurt";
char
s2[100],
*s3;
char s2[100], *s3;

Tony
Tony Blurt
Blurt
To123Blurt
To123Blurt
Blurt
Blurt

strcpy(s2,
strcpy(s2, s);
s);
printf("%s\n",
printf("%s\n", s2);
s2);
strncpy(s2
+
2,

char *strtok(char *s,
const char *sep);
Tr v
a ch c a o n u tiên. Mu n tách o n k ti p
tham s th nh t s là NULL

NH P MÔN L P TRÌNH

12/23/2009

28


Chu i ký t – ví d strtok
#include
#include <stdio.h>
<stdio.h>
#define
#define SEPARATOR
SEPARATOR ".,
"., ""
int
int main()
main()
{{
char
char s[]=
s[]= "Thu
"Thu strtok:
strtok: 9,123.45";

int main()
main()
{{
char
char s[]=
s[]= "Thu
"Thu tim
tim kiem
kiem chuoi";
chuoi";
char
*p;
char *p;
pp == strchr(s,
strchr(s, 'm');
'm');
printf("%s\n",
printf("%s\n", p);
p);
pp == strstr(s,
strstr(s, "em");
"em");
printf("%s\n",
printf("%s\n", p);
p);
return
0;
return 0;

m

memmove(s
+
memmove(s + len,
len, s,
s, strlen(s)+1);
strlen(s)+1);
strncpy(s,
strncpy(s, sub,
sub, len);
len);
}}
123
123Thu
Thuchen
chen
int
main()
int main()
123
123Thu
Thu45chen
45chen
{{
char
char s[]=
s[]= "Thu
"Thu chen";
chen";
StrIns(s,
StrIns(s, "123");

void StrDel(char
StrDel(char *s,
*s, int
int n)
n)
{{
memmove(s,
memmove(s, ss ++ n,
n, strlen(s+n)+1);
strlen(s+n)+1);
}}
int
xoa
int main()
main()
xoa12345
12345
{{
xoa
xoa45
45
char
s[]=
"Thu
xoa
12345";
char s[]= "Thu xoa 12345";
StrDel(s,
StrDel(s, 4);
4);


Khai báo
Nh p / xu t
Con tr và chu i ký t
M t s hàm th vi n
Chèn / lo i b m t o n con

NH P MÔN L P TRÌNH

12/23/2009

34




Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status