Đó là K & R-C và đây là toàn bộ mã: http://v6shell.org/history/if.cTại sao bạn quay lại (0 * ap ++)?
Nhìn vào chức năng này:
char *nxtarg() {
if (ap>ac) return(0*ap++);
return(av[ap++]);
}
1.Question: Tại sao lợi nhuận (0 * ap ++)? Được rồi bạn muốn trả về 0 và tăng ap lên 1. Nhưng tại sao lại như thế này? Nó có nhanh hơn if (ap>ac) {ap++; return 0;}
không?
2.Question: Kiểu trả về của nxtarg phải là char *, tại sao bạn có thể trở về 0, một số nguyên?
Vui lòng tách câu hỏi của bạn thành hai. Vì đã có câu trả lời cho câu hỏi đầu tiên, tôi khuyên bạn nên rút lại câu trả lời thứ hai. –
(Vì bạn có phong cách mã hóa khủng khiếp?) Nghiêm túc, đừng làm thế. –
Mã bạn đã quyết định xem xét vì một lý do nào đó là một ví dụ rất kém về thực hành C hiện đại, ngay cả khi nó là sở thích lịch sử. Bạn có thể đặt một câu hỏi cho mỗi và mọi chức năng trong tập tin đó và không tìm hiểu bất cứ điều gì hữu ích trong quá trình này. Hoặc bạn có thể tìm thấy mã tốt hơn để đọc. Tôi sẽ giới thiệu mã nguồn của musl: http://www.musl-libc.org –