30/09/2018, 17:17
Thảo luận về hàm strlen()
Một lần tình cờ lên mạng thì tôi thấy có người viết hàm strlen() như sau:
int myStrlen( char *s )
{
char *start;
start = s;
while( *s != 0 )
{
++s;
}
return s - start;
}
Tôi đã thử và thấy nó trả về giá trị đúng như yêu cầu. Nhưng tôi không hiểu vì sao s là mảng con trỏ kiểu char trong C mà lại có thể gán trực tiếp: start = s (tôi nghĩ điều này chỉ xảy ra với chuỗi trong C++).
Thứ 2 là tại sao biến kiểu char mà lại có thể dùng: ++s.
Mong các bạn sớm hồi âm. Cảm ơn rất nhiều!
Bài liên quan





start và s đều là con trỏ mà bạn, s không phải là biến kiểu char mà là con trỏ nên nó dùng toán tử ++ đc
Bổ sung thêm câu trả lời của @llhyd7
Biến kiểu
charcũng có thể dùng ++ được. Vì char cũng là số, nhưng số này chỉ nằm trong 1 byte mà thôi. Kéo dài từ 0 tới 255 nếu làunsigned charvà -127 tới 128 nếu làchar