sách gpt4 ai đã đi

C++ 函数调用与堆栈上推送/弹出的新 block

In lại 作者:太空宇宙 更新时间:2023-11-03 10:20:48 25 4
mua khóa gpt4 Nike

我在阅读 C++ 中的变量作用域时遇到了一个有趣的 block 结构:

int main(int argc, char **argv) {
int local;

{ // New level of scope
int more_local;
}

trả về 0;
}

我知道变量在每个 block 的末尾从堆栈中弹出,由右花括号 } 表示。

我还读到函数调用也会将它们的变量压入堆栈并在调用结束时终止,用大括号 } 表示:

hàm foo() {
int more_local;
}

int main(int argc, char **argv) {
int local;
foo();

trả về 0;
}

堆栈在这两种情况下的处理方式有何不同,两者的优缺点是什么?

1 Câu trả lời

通过函数调用,您将返回地址压入堆栈并创建一个新的堆栈帧。如果您只是将部分代码括在花括号中,那么您就是在定义一个新的范围,正如您所说的。它们就像 if、for、while 等控制语句后的任何代码块。

你不能在这里真正谈论优点和缺点,因为这是两个完全不同的东西。将代码块括在大括号中不会使您受益的情况并不多,而且它会使代码更难阅读。

关于C++ 函数调用与堆栈上推送/弹出的新 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5944001/

25 4 0
太空宇宙
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com