Tôi có tranh luận với bạn của tôi. Anh ta nói rằng tôi có thể trả về một con trỏ tới dữ liệu cục bộ từ một hàm. Đây không phải là những gì tôi đã học được nhưng tôi không thể tìm thấy một phản đối cho anh ta để chứng minh kiến thức của tôi.Trả về dữ liệu cục bộ từ các hàm trong C và C++ qua con trỏ
đây được minh họa trường hợp:
char *name() {
char n[10] = "bodacydo!";
return n;
}
Và nó được sử dụng như:
int main() {
char *n = name();
printf("%s\n", n);
}
Ông nói rằng điều này là hoàn toàn OK, vì sau khi một chương trình gọi tên, nó sẽ trả về một con trỏ đến n, và ngay sau đó nó chỉ in ra. Không có gì khác xảy ra trong chương trình trong khi đó, bởi vì nó đơn luồng và thực hiện là nối tiếp.
Tôi không thể tìm thấy đối số phản đối. Tôi sẽ không bao giờ viết mã như thế, nhưng anh ta cứng đầu và nói điều này hoàn toàn ổn. Nếu tôi là sếp của anh ta, tôi sẽ bắn anh ta để trở thành một thằng ngốc cứng đầu, nhưng tôi không thể tìm thấy một cuộc tranh luận phản đối.
Một ví dụ khác:
int *number() {
int n = 5;
return &n;
}
int main() {
int *a = number();
int b = 9;
int c = *a * b;
printf("%d\n", c);
}
tôi sẽ gửi cho anh ta liên kết này sau khi tôi nhận được một số câu trả lời tốt, vì vậy ông ít nhất học một cái gì đó.
số lượng trong nhóm của bạn? bạn đã bao giờ thèm khát về "xem xét mã" như là một cơ sở cho "cải tiến" (tiền, vị trí, uy tín) Codeview không phải là "kiểm soát quá" mà là một cách chất lượng phần mềm. –
Chúng tôi không ở trong một đội, anh ấy chỉ là bạn của tôi, người cũng viết C và C++. Tôi thực sự là một sinh viên. – bodacydo