Thông tin c a m t bi n bao g m:ủ ộ ế ồ
*Tên bi nế
*Ki u d li u c a bi nể ữ ệ ủ ế
*Giá tr c a bi nị ủ ế
M i bi n s đỗ ế ẽ ược l u tr t i m t v trí xác ư ữ ạ ộ ị
đ nh trong ô nh , n u kích thị ớ ế ước c a bi n có ủ ế nhi u byte thì máy tính s c p phát m t dãy ề ẽ ấ ộ các byte liên ti p nhau, đ a ch c a bi n s ế ị ỉ ủ ế ẽ
l u byte đ u tiên ư ầ trong dãy các byte này
Trang 3* Ví d khai báo: ụ
float x;
int a;
Byte 1 Byte 2 Byte 3 Byte 4
Đ a ch bi n x ị ỉ ế
Các ô
nh ớ
c a ủ
bi n x ế
Byte 100 Byte 101 Byte 102 Byte 103
Đ a ch bi n a ị ỉ ế
Các ô
nh ớ
c a ủ
bi n a ế
Trang 4* Đ a ch c a bi n luôn luôn là m t s nguyên (h th p l c ị ỉ ủ ế ộ ố ệ ậ ụ
phân) dù bi n đó ch a giá tr là s nguyên, s th c hay ký t , ế ứ ị ố ố ự ự
…
* Cách l y đ a ch c a bi n ấ ị ỉ ủ ế
& tênbi n ế
* Ví d : ụ
void main()
{
int x=7;
float y=10.5;
cout<<"Dia chi cua bien x = "<<&x<<endl;
cout<<"Dia chi cua bien y = "<<&y;
}
K t qu ế ả
Dia chi cua bien x = 0014FC00 Dia chi cua bien y = 0014FBF4
Trang 5*Con tr là m t bi n đ ch a đ a ch , có nhi u lo i ỏ ộ ế ể ứ ị ỉ ề ạ con tr tùy thu c vào đ a ch c a m i lo i ki u ỏ ộ ị ỉ ủ ỗ ạ ể
bi n ế
*Cách khai báo con trỏ
*Ví d : ụ
int *px, y;
float *pm, n;
*Cách l y giá tr c a con tr ấ ị ủ ỏ
Ki u d li u * TênConTr ể ữ ệ ỏ
* TênConTrỏ
Trang 6void main()
{
int *px, y;
float *pa, b;
y=10;
b=14.5;
px= & y;
pa= & b;
cout<<"Gia tri cua px = "<< *px <<endl;
cout<<"Gia tri cua pa = "<< *pa ;
}
K t qu ế ả
Gia tri cua px = 10
Gia tri cua pa = 14.5
L y đ a ch c a bi n ấ ị ỉ ủ ế
y gán vào px
L y giá tr c a con ấ ị ủ
tr px ỏ
Trang 7*Chu i ký t là m t dãy các ph n t , m i ph n t ỗ ự ộ ầ ư ỗ ầ ư
có ki u ký t ể ự
*Khai báo:
*Cách 1: Con tr h ng ỏ ă
char Tênchu i[< S ky t t i đa c a chu i>] ; ô ô ư ô ủ ô
Vi du: char chuoi[25];
*Ý nghĩa khai báo 1 m ng ki u ky t tên là chuoi ả ê ư có 25
ph n t (nh v y t i đa ta có th nh p 24 ký t vì ầ ư ư ậ ố ể ậ ự ph n â
t th 25 đa ch a ky t k t thúc chu i ‘\0’ ư ư ư ư ế ô )
*L u y ư : Chu i ky t đ ô ư ươ c k t thuc b ng ky t ‘\0’ Do đo ê ă ư khi khai bao đ dai c a chu i luôn luôn ô u ô khai bao d 1 ư
ph n t đ ch a ky t ‘\0’ â ư ê ư ư .
Trang 8*Cách 2: Con trỏ
char *< Tên chu i >;ỗ
Ví d :ụ char *chuoi;
Trước khi s d ng ph i dùng t khóa new ư ụ ả ừ
đ c p phát vùng nhể ấ ớ
Ví d :ụ
char *str;
str = new char[51];//C p phát 51 ký tấ ự
Trang 9* cin.getline(chuoi, s ký t t i đa); ố ự ố
* Ví d : ụ
char *str;
str = new char [30];
cin.getline(str, 30);
Trang 10Vi t ch ế ươ ng trình nh p và xu t chu i ký t ậ ấ ỗ ự
#define MAX 255
void main()
{
char str1[MAX];
char *str2;
cout<<"Nhap chuoi str1: ";
cin.getline(str1, MAX);
str2 = new char[MAX];
cout<<"Nhap chuoi str2: ";
cin.getline(str2, MAX);
cout<<"Chuoi str1: "<<str1<<endl; cout<<"Chuoi str2: "<<str2<<endl;
Trang 11*Tính đ dài c a chu i sộ ủ ỗ
int strlen(char *s);
void main()
{
char *s = "Lap trinh C";
cout<<"Do dai s = "<<strlen(s); }
K t qu ế ả
Trang 12*Sao chep n i dung chu i ngu n vào chu i ộ ỗ ồ ỗ đích, n i dung c a chu i đích s b xóaộ ủ ỗ ẽ ị
*Chep n ký t t chu i ngu n sang chu i ự ừ ỗ ồ ỗ đích N u chi u dài ngu n < n thì hàm s ế ề ồ ẽ
đi n kho ng tr ng cho đ n ký t vào đíchề ả ă ủ ự
strcpy(char *đích, char *ngu n); ồ
strncpy(char *đích, char *ngu n, int n); ồ
Trang 13*N i chu i s2 vào chu i s1 ố ỗ ỗ
strcat(char s1[],char s2[]);
*N i n ký t đ u tiên c a chu i s2 vào chu i s1 ố ự ầ ủ ỗ ỗ
strncat(char s1[],char s2[],int n);
*So sánh 2 chu i s1 và s2 theo nguyên t c ỗ ă th t t ứ ự ừ
đi nể Phân bi t ch hoa va th ê ư ươ ng. Tr v : ả ề
0 : n u s1 b ng s2 ế ă
>0: n u s1 l n h n s2 ế ớ ơ
<0: n u s1 nh h n s2 ế ỏ ơ
int strcmp(char s1[],char s2[]);
Trang 14*So sánh n ký t đ u tiên c a s1 và s2, giá ự ầ ủ
tr tr v tị ả ề ương t hàm strcmp()ự
int strncmp(char s1[],char s2[], int n);
*So sánh chu i s1 và s2 nh ng không phân ỗ ư
bi t hoa thệ ường, giá tr tr v tị ả ề ương t ự hàm strcmp()
int stricmp(char s1[],char s2[]);
*So sánh n ký t đ u tiên c a s1 và s2 ự ầ ủ
nh ng không phân bi t hoa thư ệ ường, giá tr ị
tr v tả ề ương t hàm strcmp()ự
int strnicmp(char s1[],char s2[], int n);
Trang 15*Tìm s xu t hi n đ u tiên c a ký t c ự ấ ệ ầ ủ ư
trong chu i s Tr v :ỗ ả ề
NULL: n u không có ế
Đ a ch c: n u tìm th y ị ỉ ế ấ
char *strchr(char s[], char c);
*Tìm s xu t hi n đ u tiên c a chu i s2 ự ấ ệ ầ ủ ỗ trong chu i s1 Tr v :ỗ ả ề
NULL: n u không có ế
Ng ượ ạ c l i: Đ a ch b t đ u chu i s2 trong s1 ị ỉ ă ầ ỗ
char *strstr(char s1[], char s2[]);
Trang 16*Nh p vào m t chu i ký t , xu t ra màn hình ậ ộ ỗ ự ấ chu i b đ o ng ỗ ị ả ượ c th t các ký t ứ ự ự
*Vi t ch ế ươ ng trình đ m có bao nhiêu kho ng ế ả
tr ng trong chu i ă ỗ
*Vi t ch ế ươ ng trình nh p vào hai chu i s1 và s2, ậ ỗ
n i chu i s2 vào s1 Xu t chu i s1 ra màn hình ố ỗ ấ ỗ
* Đ i t t c các ký t có trong chu i thành ch ô ấ ả ự ỗ ữ
th ườ ng (không dùng hàm strlwr).
*Đ i t t c các ký t trong chu i sang ch in hoa ô ấ ả ự ỗ ữ (không dùng hàm struppr).