【交流】关于参数传递及修改问题
程序代码:#include <stdio.h>
#include <malloc.h>
//////////////////////////////////////////////////////////////////////////
//结构体定义
//////////////////////////////////////////////////////////////////////////
typedef struct Node{
int iNum; //各种成员。。。
struct Node *pNext; //下一个节点
}stNode, *pNode;
//////////////////////////////////////////////////////////////////////////
//说明:很多人会像如下一样进行参数传递
//////////////////////////////////////////////////////////////////////////
void Create(pNode p_pNode) //不要说自己是void Create(struct Node* p_pNode)
{
p_pNode = (pNode)malloc(sizeof(stNode)); //为p_pNode申请内存空间
p_pNode->pNext = NULL; //指针赋值,防止"出轨"
p_pNode->iNum = 10; //纯粹为了演示
}
int main(void)
{
pNode l_pNode = NULL;
Create(l_pNode); //很多人以为的创建
printf("iNum = %d\n", l_pNode->iNum);
printf("pNext = %d\n", l_pNode->pNext);
return 0;
}
/************************************************************************
刚来论坛没几天,但是看到很多人都是这么写程序(尤其最近很多人在学数据结构,链表操作)
好好理解一下指针:
void fun(int i); //值传递,i是拷贝了一份给fun,调用fun时传递的变量没有改变
void fun(int *i); //这里看你传过来的是什么
//如果是&i,那么就是传递了i的地址,可以进行任意修改操作
//如果是int *i中的i,那么对不起,你传递的是int*类型的一份拷贝,修改同样无效
//我知道很多人不服气,自己验证一下。
//学过汇编的人,一定能懂我的心 :)
如果你懂了,就绕行;初学者们,深入理解一下(不会太深):
有图有真相!
//Re:不会弄···打包吧。非美工,将就着看。
*************************************************************************/
//现在应该知道怎么写了吧?有什么不同意见,大家一起讨论交流。









