Khai báo địa chỉ của hàm bằng cách sử dụng typedef

c++

(Lý Lan Tuệ) #1

@@ Huhu, xin chào mọi người ạ, lại là em đây, lần này là bài về con trỏ nâng cao, nghỉ Tết lâu quá em cũng có ôn lại mà k thấm lắm
Đề bài như hình ạ, em làm dc câu 1, nhưng mấy câu còn lại em chưa hiểu rõ lắm @@, mong mn có thể nói rõ cho em thêm về typedef và làm thử mấy ví dụ sau dc không ạ, có giải thích càng tốt ạ
Em xin chân thành cảm ơn


(Hw3tr4n) #2

Theo mình hiểu thì typedef này để code nhanh với gọn hơn thôi
VD:
bình thường bạn sẽ code với hàm struct là:

struct sinhvien
{...};

và nếu muốn tạo một dữ liệu nữa thuộc kiểu struct thì bạn lại gõ lại

struct sinhvien sinhvien1;

thì khi thêm typedef ở đầu struct ban đầu thì bạn chỉ cần gõ tên của hàm struct và tên dữ liệu bạn cần theo kiểu struct
VD:

typedef struct sinhvien
{...};
sinhvien sinhvien1;

(‏) #3

sửa tên hàm xyz lại là (*Xyz), xóa hết mấy cái tên tham số là xong :joy:

void process();
int* inputArray(int& n);

typedef void (*Process)();
typedef int* (*InputArray)(int&);

...
Process p = process; //hoặc &process
InputArray ia = inputArray; //hoặc &inputArray

còn kiểu thì bỏ cái tên hàm đi nữa là xong:

void process(); --> kiểu là void (*)()
int* inputArray(int& n); --> kiểu là int* (*)(int&)

thêm cái dzui nữa là function trong C++ có thể hiểu là function pointer, mà function pointer deref nó lại ra function, mà function lại là function pointer… nên có thể viết như sau:

Process p = 
    ************
      **        **
      **        **
      ****      **
      **  ******
      **
      **
    ******
    process;

vẫn hợp lệ :crazy_face: Tốt nhất là viết doc cho từng hàm theo kiểu này, rất là sành điệu


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