来自ncurses的按引用传递行为

来自ncurses的按引用传递行为,c,pass-by-reference,ncurses,C,Pass By Reference,Ncurses,我最近开始玩网络课程。 据我所知,C不支持按引用传递 但是,有些函数似乎表现出这种行为: 调用getmaxyx(stdscr、maxRow、maxCol)将行数和列数分别分配给maxRow和maxColgetyx似乎表现出类似的行为 这是如何实现的?这不是一个直接的函数调用,而是一个宏,请看: 所有这些接口都是宏。变量y和x之前不需要“&” 例如: #define getmaxyx(w, y, x) (y) = getmaxy(w), (x) = getmaxx(w) 这不是一个直接函数调

我最近开始玩网络课程。 据我所知,C不支持按引用传递

但是,有些函数似乎表现出这种行为:

调用
getmaxyx(stdscr、maxRow、maxCol)
将行数和列数分别分配给
maxRow
maxCol
getyx
似乎表现出类似的行为


这是如何实现的?

这不是一个直接的函数调用,而是一个宏,请看:

所有这些接口都是宏。变量y和x之前不需要“&”

例如:

#define getmaxyx(w, y, x)   (y) = getmaxy(w), (x) = getmaxx(w)

这不是一个直接函数调用,而是一个宏,请看:

所有这些接口都是宏。变量y和x之前不需要“&”

例如:

#define getmaxyx(w, y, x)   (y) = getmaxy(w), (x) = getmaxx(w)

我也爱上了这个把戏。它似乎是一个函数,我从来没有想到它是一个宏。我经常感觉到人们使用大写字母(如本答案[)来表示宏,但这似乎不是一条规则,不是吗?我也爱上了这个把戏。它似乎是一个函数,我从来没有想到它是一个宏。我经常感觉到人们使用大写字母(如本答案[)表示宏,但这似乎不是一条规则,是吗?