Thắc mắc định dạng hàm theo cấu trúc

Mình không hiểu code đang làm gì, mong mọi người giải đáp, mình cảm ơn

typedef struct {
   int number;
} Test;

Test* Test_New(Test t,int number) {
    t.number = number;
    return &t;
}

Tạo 1 struct có tên là Test

Test* Test_New(Test t,int number)

Function trả về con trỏ có kiểu là Test

2 Likes

Sao khái niệm này mình không thấy ở trong ebook nào cả ^^ ?

Chắc bạn tìm chưa hết thôi.

Tìm xem, chắc chắn có :smiley:
https://www.tutorialspoint.com/cprogramming/c_return_pointer_from_functions.htm

2 Likes

Ý mình là mình k tìm thấy khái niệm hàm trả về biến có kiểu là cấu trúc. Nếu trả về rồi thì biến đó có đặc điểm gì? Nó có giống c++ không?

Chú đinh nghĩ thêm 1 kiểu thì chú sử dụng thôi, chứ có gi đâu.
Thay vì dùng kiểu có sẳn, thì c cho phép định nghĩa thêm kiểu mới. c++ thì chắc cũng có.

1 Like

struct về cơ bản cũng là một kiểu dữ liệu (giống int, …) nhưng do người dùng định nghĩa nên về mặt ý nghĩa không khác gì với các kiểu dữ liệu khác:

Hàm sẽ trả về con trỏ, trỏ tới vùng nhớ chứa kiểu dữ liệu struct Test.

1 Like

Đã thông, cảm ơn các bác nhiều :slight_smile:

Cái này ko ổn vì t là biến local, lấy pointer về cũng đâu có xài được.

Nói chung là nó ko ảnh hưởng gì đến t cũ (tham trị là vậy).

1 Like

Em chỉ làm ví dụ cho cái trả kiểu Test về thôi :slight_smile: , chứ code này có bug

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