不传递地址,改变外界变量的值

来源:互联网 发布:mysql数据库笔试题 编辑:程序博客网 时间:2024/06/05 03:40

c语言里面传值可以改变传入参数的值:方法:宏实现

curses调用里面有一个例子

int row,col; /* 存储行号和列号的变量,用于指定光标位置 */
getmaxyx(stdscr,row,col); /* 取得 stdscr(标准输出设备)的行数和列数 */

mvprintw(row/2,(col­strlen(mesg))/2,"%s",mesg);  /*在屏幕的正中打印字符串 mesg*/

问题:为什么getmaxyx能改变变量row和col的值,row和col并没有传递地址进去啊?

查看源代码:

#define getmaxyx(win,y,x) (y = (win)?((win)->_maxy + 1):ERR, x = (win)?((win)->_maxx + 1):ERR)   // 这里利用宏来实现改变参数的值



0 0
原创粉丝点击