Tôi đang đọc giải pháp cho sự cố trong sách Cracking the Coding interview (Q 1.2). Mục đích là để thực hiện một hàm void revers(char* str)
trong C để đảo ngược chuỗi kết thúc null.Trong C, địa chỉ của con trỏ có phải là 0 không?
Mã giải pháp trông giống như sau:
void reverse(char *str)
{
char* end=str;
char tmp;
if(str)
{
while(*end)
{
end++;
}
end--;
//code to reverse
}
}
Ở đây, str
chứa được đúng địa chỉ? Và if(str)
sẽ chỉ đánh giá là false
nếu str
là 0
, phải không?
Vì vậy, những gì tôi đang nói là, là không có cơ hội mà str
sẽ chứa địa chỉ 0x0000
, do đó đánh giá if(str)
-false
?
Tôi có thể giới thiệu bạn đến câu trả lời của tôi [ở đây] (http://stackoverflow.com/questions/17462299/initializing-variable-at-address-zero-in-c/17462496#17462496) liên quan đến một câu hỏi tương tự ? – Nobilis
Không, trừ khi bạn tự vượt qua 'str' bằng 0 cho hàm. –
Chạy lệnh này: 'char * p; printf ("% p", p); 'để trả lời câu hỏi của bạn. :) – ludesign