Error: invalid conversion from 'const char*' to 'char*' [-fpermissive]

Hàm strchr() tìm kiếm 1 kí tự trong chuỗi string:
char *strchr(const char *s, int c)
{
const char ch = c;
for ( ; *s != ch; s++)
if (*s == ‘\0’)
return 0;
return s;
}

Tại sao cần phải return (char*) s; thay vì return s;

Chào Thang Truong Nguyen!
Bắt đầu vị trí s = &s[0]
for ( ; *s != ch; s++)
–> vị trí s = &s[n].
với s[n] là điểm cần tìm.

2 Likes

Nếu retrun s; thì chương trình sẽ báo lỗi. Tại sao lại thế hả b?

Chào Thang Truong Nguyen!
Theo mình nghĩ ( nếu sai xin lỗi):
const char* là con trỏ hằng. Link: [Wiki] Phân biệt con trỏ hằng và hằng con trỏ
–> không cho thay đổi giá trị. hàm trả về char* nên cần ép kiểu nó trở lại char*. từ con trỏ có thể biến thành con trỏ hằng và không thể ngược lại. Con trỏ có thể thay đổi giá trị ô nhớ!

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?