Trường hợp của bạn đáng lẽ không cần phải hỏi. Cứ compile một bài chạy thử thì biết.
p=0 ---> *p là truy cập trị ở địa chỉ 0 ???
Bài này tác giả làm không hẳn là chuyên ngiệp. Muốn đảo chuỗi thì dùng 2 biến đặt 2 đầu chuỗi, cho 2 biến tiến vào, đến lúc đụng nhau là đã vào tời giữa chuỗi, chấm dứt vòng lặp. Tương tự như vậy, nếu dùng con trỏ thì phải đặt 2 con trỏ ở 2 đầu.
for (char *p1 = p, *p2 = p+strlen(p)-1; p1 < p2; )
{
char pt = *p1; *p1 = *p2--; *p1++ = pt;
}
Vòng lặp For trong C là một lệnh rất mạnh, có thể sử dụng nhiều biến điều khiển. Làm việc với C phải biết tận dụng sức mạnh của ngôn ngữ. Đặc biệt con trỏ vốn là yếu tố nguy hiểm trong ngôn ngữ C. Đã hy sinh hiểm nguy để dùng con trỏ mà không tác động được sức mạnh là làm công việc lỗ lã. Thường thường, dùng con trỏ sẽ kèm với ++ hay -- ngay tại chỗ.
Người ta chịu khó học thì phải đáng khuyến khích chư? Dẫu sao cũng còn tốt hơn lợi dụng quảng bá chữ ký !!!
Bookmarks