Khi tạo một mảng con trỏ trong c, tác động của việc thêm dấu ngoặc đơn là gì?Mảng con trỏ
Ví dụ
int (*poi)[2];
vs
int *poi[2];
Khi tạo một mảng con trỏ trong c, tác động của việc thêm dấu ngoặc đơn là gì?Mảng con trỏ
Ví dụ
int (*poi)[2];
vs
int *poi[2];
Con trỏ trỏ tới một mảng của 2 int
s:
int (*poi)[2];
Một mảng hai int
con trỏ:
int *poi[2];
Mảng thường có ưu tiên cao hơn con trỏ, nhưng nếu bạn thêm dấu ngoặc thì con trỏ sẽ là "đầu tiên".
Chân đế buộc chặt hơn *, vì vậy đầu tiên là một mảng con trỏ int, trong khi dấu thứ hai là một con trỏ tới một mảng int.
Bạn có mà trở lại phía trước, phải không? –
Cách khác tôi nghĩ. –
Toán tử chỉ mục []
liên kết mạnh hơn toán tử hủy đăng ký *
.
int *poi[2]
dịch để:
Nếu bạn thấy poi, áp dụng [x]
với nó, sau đó dereference kết quả qua *
và bạn nhận được một int
. Vì vậy, nó là một mảng của 2 con trỏ đến int.
Trong
int (*poi)[2]
các parantheses buộc *
được áp dụng đầu tiên. Vì vậy, bất cứ lúc nào poi được sử dụng, nếu bạn áp dụng *
trước, và sau đó [x]
bạn nhận được int
. Vì vậy, nó là một con trỏ đến một mảng của 2 int
.
Tiết kiệm hao mòn trên bàn phím –