TỔ TIN HỌC TRƯỜNG THPT ĐỖ CÔNG TƯỜNG

https://tinhocdct.xyz

[C++]. Define, Typedef Và Using

Trong bài viết này mình sẽ giúp các bạn sử dụng thành thạo và phân biệt được 2 từ khóa define và typedef trong C++
define, typedef và using trong c++
1.Typedef
Typedef giúp bạn tạo một tên mới cho các kiểu dữ liệu trong ngôn ngữ C++
Sau khi tạo một bí danh mới cho các kiểu dữ liệu đó thì bạn có thể sử dụng tên mới hoặc tên cũ của kiểu dữ liệu đó đều được.
Cú pháp : typedef kiểu_dữ_liệu tên_mới;
Ví dụ 1: 
#include <iostream>
#include <iomanip>
using namespace std;

typedef int songuyen;
typedef long long ll;
typedef double sothuc;
typedef bool dungsai;

int main(){
       songuyen a = 1000;
       ll b = 2828282828282;
       sothuc c = 3.1239;
       dungsai check = true;
       cout << a << " " << b << endl;
       cout << fixed << setprecision(2) << c << endl;
    return 0;
}
Output 
1000 2828282828282
3.12
true
Ví dụ 2 : Định nghĩa tên cho kiểu pair
#include <iostream>
#include <iomanip>
using namespace std;

typedef char kitu;
typedef pair<int, int> ii;

int main(){
       kitu x = '@';
       cout << x << endl;
       ii p = {100, 200};
       cout << p.first << ' ' << p.second << endl;
    return 0;
}
Output :
@
100 200

2.Define
Define có 3 chức năng chính : 
  • Định nghĩa tên cho kiểu dữ liệu
  • Định nghĩa tên cho giá trị
  • Định nghĩa tên cho cấu trúc hoặc câu lệnh
Định nghĩa tên cho kiểu dữ liệu 
Define có thể sử dụng để làm công việc tương tự như typedef đó là định nghĩa tên mới cho kiểu dữ liệu
Cú pháp : #define tên_mới kiểu_dữ_liệu
Ví dụ 1 : 
#include <iostream>
#include <iomanip>
using namespace std;

#define songuyen int
#define ll long long
#define sothuc double
#define dungsai bool
#define ii pair<int, int>

int main(){
       songuyen a = 1000;
       ll b = 2828282828282;
       sothuc c = 3.1239;
       dungsai check = true;
       ii p = {100, 200};
       cout << a << " " << b << endl;
       cout << fixed << setprecision(2) << c << endl;
       cout << boolalpha << check << endl;
       cout << p.first << " " << p.second << endl;
    return 0;
}
Output 
1000 2828282828282
3.12
true
100 200

Định nghĩa tên cho giá trị
Define được sử dụng để đặt tên cho các giá trị được sử dụng trong chương trình nhằm mục đích truyền tải ý nghĩa tốt hơn
Cú pháp :  #define tên_giá_trị giá_trị
Ví dụ 2 : 
#include <iostream>
#include <iomanip>
using namespace std;

#define PI 3.14
#define INF 1000000000
#define TRUE 1
#define FALSE 0
#define Tech28 "28tech.com.vn"
#define mod 1000000007

int main(){
       cout << fixed << setprecision(2) << PI << endl;
       cout << INF << endl;
       cout << TRUE << endl;
       cout << FALSE << endl;
       cout << Tech28 << endl;
       cout << mod << endl;
    return 0;
}
Output 
3.14
1000000000
1
0
28tech.com.vn
1000000007

Định nghĩa tên cho cấu trúc hoặc câu lệnh
Việc sử dụng define để định nghĩa các câu lệnh hay cấu trúc thường được sử dụng bởi các bạn lập trình viên trong các cuộc thi về lập trình thi đấu hay thuật toán. Mục đích là có thể tiết kiệm thời gian code, tuy nhiên việc này sẽ dẫn tới khó khăn cho người khác khi cần tham khảo mã nguồn.
Hiện tại các bạn mới học lập trình thì chưa nên sử dụng define với mục đích này, sau này khi đã code tốt hơn các bạn có thể sử dụng nó để tiết kiệm thời gian code. Tuy nhiên mình nghĩa bạn chỉ nên sử dụng khi bạn code một mình và không cần chia sẻ mã nguồn cho người khác.
Ví dụ 3 : 
#include <iostream>
#include <iomanip>
using namespace std;

//Định nghĩa cấu trúc để in ra dòng chữ 28tech.com.vn
#define greet cout << "28tech.com.vn\n";

//Định nghĩa cấu trúc vòng lặp for
#define FOR(i, a, b) for(int i = a; i <= b; i++)

//Định nghĩa cấu trúc để in ra số lớn hơn trong 2 số
#define findMax(a, b) cout << (a > b ? a : b) << endl;


int main(){
       greet;
       greet;
       findMax(10, 20);
       findMax(100, 50);
       FOR(i, 1, 5){
              cout << i << " ";
       }
    return 0;
}
Output 
28tech.com.vn
28tech.com.vn
20
100
1 2 3 4 5

3. Sự Khác Nhau Giữa Define Và Typedef
Typedef #Define
Chỉ sử dụng để đặt tên thay thế cho kiểu dữ liệu Có thể sử dụng để đặt tên cho kiểu dữ liệu, giá trị, cấu trúc, câu lệnh
Kết thúc bởi dấu ; Không có kết thúc bằng dấu ;
Được xử lý bới trình biên dịch (Compiler) Được xử lý bởi preprocessor
Không có dấu # Bắt đầu bởi dấu #

4. Từ Khóa Using
Nếu bạn sử dụng chuẩn C++11 hoặc mới hơn thì bạn có thể sử dụng using để thay cho typedef 
Ví dụ : 
#include <iostream>
#include <iomanip>
using namespace std;

using ll = long long;
using ii = pair<int, int>;
using kitu = char;


int main(){
       ll n = 1923919231345;
       cout << n << endl;
       ii p = {10, 20};
       cout << p.first << ' ' << p.second << endl;
       kitu x = '@';
       cout << x << endl;
    return 0;
}
Output 
1923919231345
10 20
@
 
bai truocbai tiep

Tác giả bài viết: Thanh Sơn

Nguồn tin: blog.28tech.com.vn

Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây