Sự khác biệt giữa int * p và int p * và int * p là gì?


Câu trả lời 1:

Chà, không có gì là:

int p *;

Đó là một tuyên bố không hợp lệ. Bạn sẽ gặp lỗi biên dịch với mã này.

Mặt khác, int * p và int * p về cơ bản là giống nhau. Không có gì ngoài vấn đề phong cách. Theo như trình biên dịch C / C ++ có liên quan, việc bạn viết int * p hay int * p không thành vấn đề. Vì vậy, nếu bạn thích liên kết * với loại hơn là biến, hãy thoải mái làm như vậy.

Nhưng một điểm quan trọng cần lưu ý:

Khai báo sau đây tạo một không hai con trỏ nguyên:

int * a, b;

Ở đây b được khai báo là số nguyên, trong đó a là con trỏ nguyên. Tuyên bố này:

int * a, * b;

khai báo cả a và b là con trỏ nguyên.


Câu trả lời 2:

Int p *: chưa thấy yetInt * p: vì ở đây * được gắn vào p, vì vậy chỉ p sẽ là một con trỏ tới số nguyên. Nếu bạn khai báo một biến khác sau khi p được phân tách bằng dấu chấm phẩy thì nó sẽ không phải là một con trỏ. Tức là int * p, q. Ở đây p sẽ là một con trỏ tới số nguyên nhưng q sẽ là một biến int bình thường và không phải là con trỏ.

Trường hợp Int * p, q hoạt động tương tự Int * p, q. Cả hai khai báo đều khai báo p là một con trỏ nguyên và q là một số nguyên bình thường. Int * p, q là một loại khai báo kết thúc các lập trình viên khó hiểu.