Có nhiều bạn nghĩ kích thước của kiểu char là 1 nên kích thước con trỏ của char cũng sẽ là 1 (điều này là sai hoàn toàn).
Có 2 trường hợp sau đây:
TH1: Nếu build code của bạn trên x86 thì kết quả sẽ là 4
TH2: Nếu build code của bạn trên x64 thì kết quả sẽ là 8
Để giải thích cho điều này:
Vì giá trị của 1 con trỏ là 1 địa chỉ:
+ Trên x86 sẽ có $2^{32}$ địa chỉ khác nhau ($2^{32}$ ô nhớ, tương đương với kiểu dữ liệu có kích thước 4 byte)
+ Trên x64 sẽ có $2^{64}$ địa chỉ khác nhau ($2^{64}$ ô nhớ, tương đương với kiểu dữ liệu có kích thước 8 byte)
$\to$ Con trỏ phải được cấp phát đủ bộ nhớ để lưu trữ các địa chỉ.
$\Rightarrow$ Và từ đây, ta có: sizeof(pointer) phụ thuộc vào nền tảng mà bạn build code.