Giáo trình ngôn ngữ C


a. Phép so sánh hai con trỏ



tải về 2.34 Mb.
Chế độ xem pdf
trang53/62
Chuyển đổi dữ liệu16.03.2023
Kích2.34 Mb.
#54376
1   ...   49   50   51   52   53   54   55   56   ...   62
C ĐHQGHN

a. Phép so sánh hai con trỏ 
Trên con trỏ tồn tại các phép so sánh (= =, !=, <, <=, >,>=) hai con trỏ bằng nhau là 
hai con trỏ cùng trỏ tới một đối tượng (có giá trị bằng nhau), ngược lại là khác nhau. Con 
trỏ trỏ tới vùng nhớ có địa chỉ nhỏ hơn là con trỏ nhỏ hơn. 


Gi¸o tr×nh tin häc c¬ së II - N
gôn ngữ
 C
82
b. Phép cộng con trỏ với số nguyên 
Giả sử p là con trỏ kiểu T, k là số nguyên thì (p + k) cũng là con trỏ kiểu T, không 
mất tổng quát giả sử p trỏ tới phần tử t thì
à
p+1 là con trỏ trỏ tới một phần tử kiểu T kế tiếp sau t  
à
p+2 trỏ tới một phần tử kiểu T kế tiếp sau t 2 phần tử,... 
à
p -1 là con trỏ trỏ tới một phần tử kiểu T kế tiếp trước t  
à
p -2 trỏ tới một phần tử kiểu T kế tiếp trước t hai phần tử,... 
à
tổng quát p+k trỏ tới phần tử cách t một khoảng k phần tử kiểu T (nếu k >0 dịch 
về phía địa chỉ lớn, k<0 thì dịch về phía địa chỉ nhỏ). 
 Ví 
dụ:
int a; // giả sử a có địa chỉ 150 
int 
*p; 


&a; 
thì 
p+1 là con trỏ kiểu nguyên và p+1 trỏ tới địa chỉ 152; p + k trỏ tới 150 +2*k. 
c. Phép trừ hai con trỏ 
Nếu p, q là hai con trỏ cùng kiểu T thì p-q là số nguyên là số các phần tử kiểu T nằm 
giữa hai phần tử do p và q trỏ tới. 
Ví dụ:
int *p, *q; 
giả sử p trỏ tới phần tử có địa chỉ 180, q trỏ tới phần tử có địa chỉ 160 thì 
(p-q) = = 10;
float *r1, *r2; 
giả sử r1 trỏ tới phần tử có địa chỉ 120, r2 trỏ tới phần tử có địa chỉ 100 thì 
(r1-r2) = = 5;
V.4.2 - Tổ chức vùng nhớ của mảng
Như trong phần trên chúng ta đã nói, khi có một định nghĩa mảng thì chương trình
biên dịch cấp phát một vùng nhớ (liên tiếp - các ô nhớ liền kề nhau) có kích thước bằng 
tổng kích thước của các phần tử trong mảng, các phần tử của mảng xếp tuần tự trong bộ 
nhớ, phần tử đầu tiên có địa chỉ thấp nhất trong vùng đó, và đây cũng chính là địa chỉ của 
mảng, phần tử thứ hai của mảng sẽ là ô nhớ kề sát sau (ô nhớ có địa chỉ cao hơn) phần tử 
thứ nhất,... Ở đây chúng ta nói ô nhớ có thể là 1 byte, 2 byte, 4 byte,.. tùy theo kiểu dữ 


Gi¸o tr×nh tin häc c¬ së II - N
gôn ngữ
 C
83
liệu của các phần tử mảng là gì (tương ứng là 1,2,4,.. byte). Và địa chỉ của ô nhớ là địa 
chỉ của byte đầu tiên trong các byte đó. 
Ví dụ 1: chúng ta định nghĩa mảng A kiểu nguyên: 

tải về 2.34 Mb.

Chia sẻ với bạn bè của bạn:
1   ...   49   50   51   52   53   54   55   56   ...   62




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương