Function Pointer in c

A/c/b/e cho mình hỏi về khai báo pointer
1, mình khai báo “return poiter from function” như sau có giống nhau ko?
(int *) funcPtr (int );
int * funcPtr (int);
2, cái khai báo hàm dưới đây gọi là gì, và nó khác gì khai báo “return poiter from function”?

(int *) (* funcPtr) (int );

Mình xin chân thành cám ơn

Cái khai báo này là tào lao nha :kissing:

Cái này cũng tào lao luôn


int * funcPtr (int);

Cái này là 1 function return int* thôi
Bạn muốn viết 1 hàm, trả về 1 pointer to function thì như sau

int (*func())()

Đẹp đẽ hơn

typedef int (*f)()
f func() {
}
6 Likes

Cái bài này là đề thi trường mình á, chắc ko sai đâu

  1. Có thể compiler bạn học (int *) tương tự như int* -> nếu như vậy thì sẽ thành int* funcPtr(int);int* (* funcPtrr)(int); thì khi đó cái đầu mình giải thích ở trên. Cái sau là funcPtr là 1 con trỏ hàm trỏ tới hàm nhận tham số int và trả về int*
  2. Có thể đề cho vậy và bạn chỉ cần đơn giản là 2 câu sau không có nghĩa :smiley:
  3. Đề sai? Cũng có thể :3 Kiện lên được cộng điểm OvOb
8 Likes

bác cho em hỏi cái int* (* funcPtrr)(int); gọi là gì trong tiếng anh ạ, để em google ^^

Là function pointer thôi bạn
Bạn có thể tìm keyword này và hiểu hơn về cách đọc nè: how to read C declarations?

6 Likes

em cám ơn bác nhiều ^^ chúc bác mạnh khỏe và thành công

int (* funcPtr) (int );
=> funcPtr is a pointer to a function that takes as argument
an integer an returns an integer.

(int *) funcPtr (int );
=>funcPtr is a function that takes as argument an integer an returns a pointer to an integer.

(int *) (* funcPtr) (int );
=> funcPtr is a pointer to a function that takes as argument
an integer an returns a pointer to an integer.

1 Like

mấy cái syntax này thường chỉ hay gặp trong các bài test thôi, thực tế bạn chỉ cần nhớ cú pháp 1 ( khai báo function pointer ) là đủ.

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