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
char
cũ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 char
và -127 tới 128 nếu làchar