Hỏi ý nghĩa của vòng lặp trong hàm

ý nghĩa của for (b=a;*b;++b) là gì, tại sao return b-a lại ra độ dài của xâu. Giúp mình với

int strlen(const char *a){
    const char *b;
    for (b=a;*b;++b)
        cout<<b;
    return b-a;
}

for(b=a;*b;++b)
Có nghĩa là khởi tạo vị trí con trỏ b ban đầu giống với vị trí của con trỏ a đang trỏ tới, kiểm tra xem b có bằng \0 không thì dừng, mỗi vòng lặp đi đến ô nhớ tiếp theo. Cứ như vậy sau khi hết vòng lặp thì lấy b - a ta được độ dài do thằng b lúc này này ở ô nhớ cuối cùng của chuỗi. Chuỗi trong C là các ký tự nối tiếp nhau trong ô nhớ có kích thước là (char) và kết thúc bằng \0. Bởi vậy người ta mới cout<<b ra, mình đoán nó sẽ in ra một số hệ hex , nếu cout<<*b thì in ra từng ký tự một.
p/s : có sai chỗ nào thông cảm nha :v :v :v

1 Like

Mình vẫn còn hơi mông lung. Cảm ơn nhé

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