01/10/2018, 09:49

Cho mình hỏi ý nghĩa của vòng lặp trong hàm này

ý 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;
}

Nguyễn Duy Hùng viết 11:50 ngày 01/10/2018

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

Đào Toản viết 11:50 ngày 01/10/2018

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

Bài liên quan
0