Nói rằng tôi có hai chức năng sau:địa chỉ trở về của biến cục bộ trong C
int * foo()
{
int b=8;
int * temp=&b;
return temp;
}
int * foo()
{
int b=8;
return &b;
}
tôi không nhận được bất kỳ cảnh báo cho cái đầu tiên (ví dụ: hàm trả về địa chỉ của biến cục bộ) nhưng tôi kn ow điều này là bất hợp pháp kể từ khi b
biến mất khỏi ngăn xếp và chúng tôi còn lại với một con trỏ đến bộ nhớ không xác định.
Vì vậy, khi nào tôi cần phải cẩn thận khi trả lại địa chỉ của một giá trị tạm thời?
cảm ơn! và thực tế là khi tôi in giá trị trả về trong chính nó sẽ cho tôi kết quả đúng nó thực sự có nghĩa là nó in rác? – mary
Nó có nghĩa là bạn đang gọi những gì chúng ta thường gọi là * [hành vi không xác định] (http://en.wikipedia.org/wiki/Undefined_behavior) *, tức là. hành vi không được chỉ định trong tiêu chuẩn. –