Em mới học con trỏ mọi người giải thích giùm em vấn đề này

Nếu ta khai báo
int *P;
vậy ta có typedef P List vậy lúc này List sẽ là gì là con trỏ hay biến bình thường
còn nếu khai báo
typedef P *List vậy List có phải là con trỏ cấp 2 ko?
còn nếu ta có một cái cấu trúc
struct{ int a*; }
và ta có int *b
vậy b trỏ đến a ta gọi là gì ?

:shrug: bạn hỏi cái gì nghe ngộ vậy?

  1. Bạn có biết sử dụng typedef chưa? int *P; thì P là gì? Sao lại đem kết hợp với typedef. Bạn có viết thử chương trình có sử dụng thứ như vậy chưa?
  2. int a*; ? Thiệt vậy luôn hả? Bạn viết thử chương trình có sử dụng “b trỏ đến a” xem. Làm được là hiểu liền hà.

P/s: Mình nghĩ là ngồi thử viết ra thì hiểu nhanh hơn đấy. Dĩ nhiên cái nào chạy sai/lỗi thì “giả thuyết đó” sai, rồi làm lại, đến khi đúng thì “giả thuyết đó” được kiểm chứng. Cách đó cung cấp kiến thức và kinh nghiệm nhiều hơn là post topic và ngồi đợi như thế này. (Mình chỉ khuyến khích thôi, không có ý cấm/ép bạn không được tạo topic). Nếu bạn ngại phải đợi các IDE khởi động thì cpp.sh thẳng tiến.

1 Like

bạn hiểu typedef là gì không?
Còn con trỏ là 1 địa chỉ vùng nhớ khi b trỏ tới a có nghĩa là gán địa chỉ vùng nhớ của a cho b!

typedef là định nghĩa kiểu dữ liệu còn a* là mình viết nhầm
thật ra mình chỉ học kiêu typedef struct nên mình ko rành nên lắm chỉ hiểu nom na là định nghĩa kiểu dữ liệu
còn về vấn đề mình post topic thật ra thì mình đang làm và muốn viết để học hỏi xem các bạn giải thích thế nào để mình hiểu sâu rộng hơn.
thank bạn

tydef là định nghĩa kiểu dữ liệu

Đầu tiên, con trỏbiến nhưng nó đặc biệt, có 2 điều bạn cần gg.

Thứ hai, khai báo:

type **tPointer;

là bạn khai báo con trỏ trỏ tới biến mà biến đó là con trỏ.

Thứ ba (theo ý kiến cá nhân), với typedef, bạn tạo kiểu dữ liệu mới là kiểu con trỏ, sau đó bạn lại khai báo con trỏ với kiểu dữ liệu mới đó thì tác dụng của biến được khai báo giống điều thứ hai. Bạn có thể gg kiểu dữ liệu.

Thứ tư, về struct, bạn có thể tập đếm số byte mà struct yêu cầu, ví dụ:

struct strNewType{
     int n;
} 
//yêu cầu 4 byte

struct strNewType{
     char c;
     int n;
} 
//yêu cầu 5 byte

chúc bạn học tốt!

1 Like

Cấu trúc thứ hai không phải 5 bytes đâu :slight_smile: 8 bytes đấy.

Một cách dùng typedef là gọi kiểu của con trỏ T* bằng một tên ngắn gọn hơn t. Lúc này t ngang hàng với T*.

2 Likes

Cảm ơn anh rogp10 đã chỉ lỗi sai, thật sự là 8 bytes.

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