GIÁO TRÌNH C++ - Trang 43

Các phép tính số học với pointer

Việc thực hiện các phép tính số học với con trỏ hơi khác so với các kiểu dữ liệu
số nguyên khác. Trước hết, chỉ phép cộng và trừ là được phép dùng. Nhưng cả
cộng và trừ đều cho kết quả phụ thuộc vào kích thước của kiểu dữ liệu mà biến
con trỏ trỏ tới.
Chúng ta thấy có nhiều kiểu dữ liệu khác nhau tồn tại và chúng có thể chiếm
chỗ nhiều hơn hoặc ít hơn các kiểu dữ liệu khác. Ví dụ, trong các kiểu số
nguyên, char chiếm 1 byte, short chiếm 2 byte và long chiếm 4 byte.
Giả sử chúng ta có 3 con trỏ sau:

char *mychar;

short *myshort;

long *mylong;

và chúng lần lượt trỏ tới ô nhớ

1000

,

2000

and

3000

.

Nếu chúng ta viết

mychar++;

myshort++;

mylong++;

mychar

- như bạn mong đợi - sẽ mang giá trị

1001

. Tuy nhiên

myshort

sẽ mang

giá trị

2002

mylong

mang giá trị

3004

. Nguyên nhân là khi cộng thêm 1 vào

một con trỏ thì nó sẽ trỏ tới phần tử tiếp theo có cùng kiểu mà nó đã được định
nghĩa, vì vậy kích thước tính bằng byte của kiểu dữ liệu nó trỏ tới sẽ được cộng
thêm vào biến con trỏ.
Điều này đúng với cả hai phép toán cộng và trừ đối với con trỏ. Chúng ta cũng
hoàn toàn thu được kết quả như trên nếu viết:

mychar = mychar + 1;

myshort = myshort + 1;

mylong = mylong + 1;

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.