Trên c++ có cách nào có thể đưa vào hoặc lấy ra 1 giá trị trong stack hay không?

Em xin phép đặt câu hỏi:

Ở trong hợp ngữ em có thể dùng pop,push để đưa 1 giá trị vào trong stack để lấy ra khi cần,vậy trên c++ có cách làm nào như vậy hay không?
Ví dụ như khi yêu cầu người dùng nhập vào 10 giá trị thì như trong hợp ngữ thì em đưa chúng lần luowjt vào stack và lấy ra khi cần,còn trên c++ thì em phải tạo ra 10 biến lưu 10 giá trị đó sao?
Có cách nào nhanh hơn không ạ?

Mong mọi người chỉ giúp

1 Like

cài này là C++ cơ bản thôi mà bạn.
bạn học cơ bản trước thì sẽ không phải hỏi những câu như thế này.

This post was flagged by the community and is temporarily hidden.

Dạ thôi em k hỏi nữa

trong C hoặc C++, mỗi khi bạn khai báo 1 biến thì trình biên dịch nó tự động đẩy biến đó lên stack (lùi stack pointer sp đi sizeof(biến) byte) và nhớ vị trí của biến này ở đâu trên stack. Bạn muốn tạo 10 int thì có thể khai báo
int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10;
thì trình dịch sẽ tự động lùi sp đi 40 bytes để chứa 10 int này trên stack. Trình dịch nhớ a1sp+0, a2sp+4, …, a10sp+36.

nhưng viết như vậy rất dài dòng mất công, nên bạn xài mảng:
int a[10]; //a1 là a[0], a2 là a[1], v...
trình dịch cũng tự động lùi sp đi 40 bytes. Đỡ ở chỗ bạn ko cần nhớ mảng a nằm ở vị trí nào so với sp, mà chỉ cần nhớ tên của nó là a là được rồi.

2 Likes

Ra là vậy cảm ơn tntxtnt rất rất nhiều

Chả có điều gì đảm bảo rằng vùng nhớ cho các biến này là liên tục nhau cả.

1 Like

đúng rồi, nếu a1,…, a10 riêng lẻ thì ko có gì đảm bảo cả.

có lẽ phải viết lại như vậy:
Trình dịch nhớ a1 ở sp+x1, a2 ở sp+x2, …, a10 ở sp+x10

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?