01/10/2018, 10:06
Không hiểu code stack trong sách
Chào mọi người, em đọc sách có đoạn code cài đặt ngăn xếp như thế này, nhưng vẫn chưa hiểu dòng Void* Buf=malloc(sizeof(ArrayImp)) và dòng imp =(ArrayImp*)Buf, để làm gì ạ, sao không cấp phát cho imp luôn ạ.
#include <iostream>
using namespace std;
typedef struct {
void *Arr[100];
int nItem;
}ArrayImp;
void* initStack() {
ArrayImp *imp = NULL;
void* Buf = malloc(sizeof(ArrayImp));
imp = (ArrayImp*)Buf;
if (imp != NULL)
imp->nItem = 0;
return imp;
}
Bài liên quan
Format lại code bạn ơi. Thêm 3 dấu ` vào đầu và cuối code.
cám ơn bạn, bạn có thể giải thích giúp mình thắc mắc đó được không ??? :((
Đáng lí ra phải
#include <cstdlib>
nhưng thật tình thì phải chuyển quanew
vì nó ít lỗi hơn.Thực ra dòng 2 không cần cast đâu.
chắc sách người ta viết rõ ràng ra đó mà, thay vì viết 3 dòng thành 1 dòng.
Con trỏ
imp
ban đầu ko trỏ tới đâu hết, nên nó có giá trịNULL
.malloc(n)
cấp phát và trả về con trỏ tới vùng nhớn
bytes, con trỏ này ko biết trỏ tới kiểu dữ liệu gì nên nó làvoid *
.buf
là biến tạm thời chứa con trỏ này. Sau đó con trỏ này mới được hiểu là con trỏ trỏ tớiArrayImp
thông qua dòng thứ 3 và gán choimp
. Viết 1 dòng chắc sợ người mới học code khó hiểu?cám ơn bạn nha, mình hiểu rồi