• 全部
  • 问答

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

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语言如何实现类似功能呢? 请举例说明,谢谢~
...全文
13 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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++里的引用操作符,表示下面所使用的变量仅仅是个别名,实际上还是那个变量本身,而不是一个新的变量副本。
回复
相关推荐
发帖
C语言
创建于2007-09-28

6.3w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-04-20 12:36
社区公告
暂无公告