là mã này dưới đây,
typedef NodoQ *PtrNodoQ;
PtrNodoQ ppio, fin;
giống như thế này?
NodoQ* ppio;
NodoQ* fin;
Vâng, nó dẫn đến các loại con trỏ chính xác tương tự cho ppio
và fin
.
Đối với nhận xét của bạn
"Tôi không cố gắng vì tôi đã lựa chọn thứ hai ở khắp mọi nơi trong mã của tôi, và chỉ không muốn để mất một thời gian ..."
Bạn có thể dễ dàng kiểm tra nó:
void foo(PtrNodoQ p) {
}
void bar(NodoQ* p) {
foo(p);
}
và
void baz() {
NodoQ n;
foo(&n);
bar(&n);
}
biên dịch hoàn toàn tốt đẹp, không có cảnh báo hoặc lỗi chuyển đổi loại không hợp lệ.
Ngoài ra bạn có thể tìm thấy câu trả lời một cách nhanh chóng trong this excellent reference (tôi nhấn mạnh):
Các typedef-tên là bí danh với nhiều loại hiện, và là không khai báo các loại mới. Typedef không thể được sử dụng để thay đổi ý nghĩa của tên kiểu hiện có (bao gồm tên typedef). Sau khi khai báo, một typedef-tên chỉ có thể được redeclared để tham khảo cùng một loại một lần nữa. Các tên Typedef chỉ có hiệu lực trong phạm vi mà chúng có thể nhìn thấy: các hàm khác nhau hoặc các khai báo lớp có thể định nghĩa các kiểu có tên giống nhau với ý nghĩa khác nhau.
Nguồn
2015-04-23 21:32:46
Có, chúng giống nhau. –
Tôi nghĩ vậy, nhưng tại sao không hỏi trình biên dịch? –
Tôi đã không cố gắng gây ra tôi có tùy chọn thứ hai ở khắp mọi nơi trong mã của tôi, và chỉ không muốn mất một thời gian ... do đó khi sử dụng typedef NodoQ * PtrNodoQ. PtrNodoQ trở thành bí danh của NodoQ * Tôi đoán là cách tránh '*' và dễ đọc hơn ... cảm ơn bạn Michael và Mark – HoNgOuRu