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
Bài liên quan
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áoint 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ớa1
ởsp+0
,a2
ởsp+4
, …,a10
ởsp+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ảnga
nằm ở vị trí nào so vớisp
, mà chỉ cần nhớ tên của nó làa
là được rồi.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ả.
đú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