LẬP TRÌNH C/C++ NÂNG CAO
Yêu cầu trước khi đọc: học xong Lập trình C/C++ căn bản
BÀI 1: NHẮC LẠI VỀ C/C++
Nhập xuất cơ bản
CODE
#define max(a,b) (a>b)?a:b //khai báo macro
typedef unsigned int byte; //định nghĩa kiểu dữ liệu
const float PI=3.14; //khai báo hằng số
char c;char s[20];
Cách của C
CODE
//không dùng scan nếu muốn nhập khoảng trắng
gets(s); //có thể nhập khoảng trắng
puts(s);
fflush(stdin); //xóa bộ đệm nhập
c=getchar();
putchar©;
Cách của C++
CODE
//không dùng cin>> nếu muốn nhập khoảng trắng
cin.getline(a,21); //có thể nhập khoảng trắng
cout<<a;
cin.get(); //xóa bộ đệm nhập
Con trỏ cơ bản
CODE
int a=5,*p;
//p=3; //khong hop ve vi khong the gan gia tri kieu int cho bien kieu int*
//&p=3; //khong hop le vi dia chi cua p la co dinh
p=&a; //hop le, gan dia chi ma p tro den
*p=3; //hop le, gan gia tri tai dia chi ma p tro den
cout<<p<<endl; //cai gi do bat ki, dia chi cua a
cout<<&p<<endl; //cai gi do bat ki, dia chi cua p
cout<<*p<<endl; //3,dau * luc nay mang y nghia "gia tri tai dia chi cua"
Truyền giá trị cho hàm
Trong C có khái niệm con trỏ (pointer) Trong C++ có thêm khái
niệm tham chiếu (reference)
CODE
int a;
int& b=a;
Lúc này biến a có một cái nickname là b
Như vậy có tất cả 3 cách viết hàm và truyền tham số
Cách 1:
CODE
void add10(int a)
{
a=a+10;
}
gọi:
add10(n);
Không hiệu quả, a vẫn giữ nguyên giá trị
Cách 2:
CODE
void add10(int *a)
{
*a=*a+10;
}
gọi:
add10(&n);
Hiệu quả.
Cách 3:
CODE
void add10(int &a)
{
a=a+10;
}
gọi:
add10(n);
Hiệu quả, tiện hơn cách 2.
Nhập xuất dữ liệu với kiểu mảng số nguyên
CODE
int a[3];
Truyền dữ liệu trực tiếp theo kiểu C, cách 1
CODE
for(int i=0;i<3;++i) scanf("%d",&(*(a+i)));
for(int i=0;i<3;++i) printf("%d",*(a+i));
Truyền dữ liệu trực tiếp theo kiểu C, cách 2
CODE
for(int i=0;i<3;++i) scanf("%d",&a[i]);
for(int i=0;i<3;++i) printf("%d",a[i]);
Truyền dữ liệu trực tiếp theo kiểu C++, cách 1
CODE
for(int i=0;i<3;++i) cin>>*(a+i);
for(int i=0;i<3;++i) cout<<*(a+i);
Truyền dữ liệu trực tiếp theo kiểu C++, cách 2
CODE
for(int i=0;i<3;++i) cin>>a[i];
for(int i=0;i<3;++i) cout<<a[i];
Nhập xuất dữ liệu bằng hàm với kiểu mảng số nguyên
Nhập xuất dữ liệu bằng hàm với kiểu mảng số nguyên theo kiểu
C, cách 1
CODE
void input(int[]);
input(a);
void input(int *a)
{
for(int i=0;i<3;++i)
scanf("%d",&(*(a+i)));
}
void output(int[]);
output(a);
void output(int *a)
{
for(int i=0;i<3;++i)
printf("%d",*(a+i));
}
Nhập xuất dữ liệu bằng hàm với kiểu mảng số nguyên theo kiểu
C, cách 2
CODE
void input(int[]);
input(a);
void input(int a[])
{
for(int i=0;i<3;++i)
scanf("%d",&a[i]);
}
void output(int[]);
output(a);
void output(int a[])
{
for(int i=0;i<3;++i)
printf("%d",a[i]);
}
Nhập xuất dữ liệu bằng hàm với kiểu mảng số nguyên theo kiểu
C++, cách 1
CODE
void input(int[]);
input(a);
void input(int *a)
{
for(int i=0;i<3;++i)
cin>>*(a+i);
}
void output(int[]);
output(a);
void output(int *a)
{
for(int i=0;i<3;++i)
cout<<*(a+i);
}
Nhập xuất dữ liệu bằng hàm với kiểu mảng số nguyên theo kiểu
C++, cách 2
CODE
void input(int[]);
input(a);
void input(int a[])
{
for(int i=0;i<3;++i)
cin>>a[i];
}
void output(int[]);
output(a);
void output(int a[])
{
for(int i=0;i<3;++i)
cout<<a[i];