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!

viết 19:24 ngày 30/09/2018

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

Mai Anh Dũng viết 19:31 ngày 30/09/2018

Thứ 2 là tại sao biến kiểu char mà lại có thể dùng: ++s.

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

Bài liên quan
0