30/09/2018, 23:00

Xin hỏi về bài toán trong C++

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

Doanh Văn Lương viết 01:14 ngày 01/10/2018

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.

Tao Không Ngu. viết 01:07 ngày 01/10/2018

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

Nguyễn Văn Vương viết 01:10 ngày 01/10/2018

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

viết 01:04 ngày 01/10/2018

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.

Nguyễn Văn Vương viết 01:14 ngày 01/10/2018

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

nohat viết 01:10 ngày 01/10/2018

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ả.

viết 01:11 ngày 01/10/2018

đú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

Bài liên quan
0