01/10/2018, 00:03
Giải đáp thắc mắc
struct OLK//OLK chứa giá trị nguyên và OLK nối với nhau
{
int GT;
OLK *Next;
};
......
OLK *TaovGan(int gt)//trả về địa chỉ kiểu cấu trúc
{
OLK *t=new OLK;//cấp phát 1 ô nhớ hay trỏ tới địa chỉ của (OLK cấu trúc) -> tạo 1 ô gồm GT và next nhưng ô để chống
if(t==NULL)//t lúc này có giá trị là địa chỉ của OLK !=NULL
{
return NULL;
}
t->GT=gt;
t->Next=NULL;
return t;
}//trả về địa chỉ
cho mình hỏi con trỏ chỉ chứa giá trị là địa chỉ khi gán thì phải có & tên biến,vậy tại cái dòng OLK *t=new OLK sao lại ko cần & >>mình có thắc mắc là “kiểu cấu trúc nó mặc định là địa chỉ rồi hay sao” hay là do cấp phát động nó cho mình 1 ô địa chỉ mới >> “new = &” ?
Bài liên quan
new OLK
sẽ tạo trên Heap một vùng nhớ có kích thước sizeof(OLK) bytes, nếu thành công sẽ trả về địa chỉ của vùng nhớ được cấp hoàn toàn thỏa mãn vớiOLK* t
(t chứa địa chỉ), nếu không thành công thì một exception (std::bad_alloc) sẽ được ném ra. Đểt==NULL
(nếu cấp phát thất bại) thì bạn sửa lại một tí:OLK* t = new (std::nothrow) OLK;
Link tham khảo: http://en.cppreference.com/w/cpp/memory/new/operator_new