2012-01-18 39 views
6

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){ 


} 

void reverse(const char const *sPtr){ 


} 
+0

Bạn có thể muốn để sử dụng một số 'typedef'. –

+0

@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

+0

@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ì? –

Trả lời

5

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. "

+0

Ok. cảm ơn. điều đó có ý nghĩa. – runners3431

1

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.

+0

Cảm ơn vì miếng ngon. – runners3431

2

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; 
+0

Đi lấy chuỗi và chỉ cần đảo ngược nó với một tuyên bố printf. – runners3431

Các vấn đề liên quan