Cả hai con trỏ đều giống nhau không?Khai báo cú pháp con trỏ trong một hàm
void reverse(const char * const sPtr){
}
và
void reverse(const char const *sPtr){
}
Cả hai con trỏ đều giống nhau không?Khai báo cú pháp con trỏ trong một hàm
void reverse(const char * const sPtr){
}
và
void reverse(const char const *sPtr){
}
số
const char const *sPtr
tương đương với const char *sPtr
.
const char *sPtr
thông số nói sPtr
là con trỏ đến const char
.
const char * const sPtr
là con trỏ const
đến const char
.
Lưu ý rằng đây là tương đương C99 và C11:
(C99, 6.7.3p4) "Nếu vòng loại tương tự xuất hiện nhiều hơn một lần trong cùng một specifier-vòng-list, hoặc trực tiếp hoặc thông qua một hoặc nhiều typedef, hành vi cũng giống như nó chỉ xuất hiện một lần. "
nhưng không có trong C89 nơi const char const *sPtr
là vi phạm chế:
(C90, 6.5.3) "Cùng loại vòng loại sẽ không xuất hiện nhiều hơn một lần trong danh sách specifier cùng hoặc danh sách vòng loại, hoặc trực tiếp hoặc thông qua một hoặc nhiều typedef. "
Ok. cảm ơn. điều đó có ý nghĩa. – runners3431
số
Đầu tiên là một con trỏ const
-const char
.
Thứ hai là con trỏ đến const char
.
const
liên kết với trái hoặc phải là không có gì ở bên trái.
Cảm ơn vì miếng ngon. – runners3431
Bạn đang cố gắng đạt được điều gì?
Nếu bạn muốn có một con trỏ const bạn cần phải đặt const
sau *
int * const a;
Nếu bạn muốn có một con trỏ đến const bạn cần phải đặt các const
trước *
const int *a;
Đi lấy chuỗi và chỉ cần đảo ngược nó với một tuyên bố printf. – runners3431
Bạn có thể muốn để sử dụng một số 'typedef'. –
@Dan Hay không. Sử dụng 'typedef' cho các kiểu con trỏ đối tượng không được khuyến khích. – ouah
@ouah: người không khuyến khích điều đó, và tại sao bạn lại quan tâm đến điều gì khiến người khác nản lòng, người dường như không biết anh ta đang nói gì? –