请教一个函数之间传值的问题

3661512 2004-04-20 12:36:04
在C语言函数学之间传值应该怎么做,比如在C++里,可以通过&宏来做,例如两个C++函数:

bool CreateNode(LPEVENTNODE &p, int hour, int min, int second, TCHAR* s)
{
if( NULL != p)
return false;
p = malloc(sizeof(EVENTNODE));
p->iHour = hour;
p->iMin = min;
p->iSecond = second;
lstrcpy(p->szConten, s);
p->next = NULL;
return true;
}

bool AddListNode(EVENTLIST &L, LPEVENTNODE p)
{
if( NULL == p)
return false;
LPEVENTNODE temp = NULL;
if(NULL == L.head )
L.head = p;
else
{
temp = L.head;
while (NULL != temp->next )
temp = temp->next;
temp->next = p;
}
L.size += 1;
return true;
}

这样函数CreateNode里定义的p在函数AddListNode里不会被初试化,可以使用CreateNode里p的值,C语言如何实现类似功能呢? 请举例说明,谢谢~
...全文
48 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouqingyuan 2004-04-20
  • 打赏
  • 举报
回复
楼主,你的代码那样写,可是你下面说的“这样函数CreateNode里定义的p在函数AddListNode里不会被初试化,可以使用CreateNode里p的值,C语言如何实现类似功能呢? 请举例说明,谢谢~”
却让人有点莫名其妙!!
zhouqingyuan 2004-04-20
  • 打赏
  • 举报
回复
首先&这个符号不是宏,表示引用。
其次,在C里面要传递值,可以通过指针来做的。
cngdzhang 2004-04-20
  • 打赏
  • 举报
回复
值传递:

int i=10;

void change(int n)
{
n=100;
}

change(i);
i还是等于10,而不是100

传地址:

int i=10;

void change(int *n)
{
*n=100;
}

change(&i);
i等于100,而不是10
3661512 2004-04-20
  • 打赏
  • 举报
回复
多谢指点,那我这段代码应该如何改呢?
庄鱼 2004-04-20
  • 打赏
  • 举报
回复
漏主队概念不清楚,所谓宏是以#define方式定义的变量或者是函数、结构、混合嵌套体
宏不是操作符,而是提交给编译器的一种处理方法;
&是C++里的引用操作符,表示下面所使用的变量仅仅是个别名,实际上还是那个变量本身,而不是一个新的变量副本。

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧