函数的参数有很多种,有的是传值,有的是指针,有的是引用,有的是指向指针的指针。下面对各种用法做个总结1:函数参数
下面由两个例子来说明:
void f(int i)
{
i = 0;
}
void f1(int *i)
{
*i = 0;
}
mian()
{
int x = 1, y = 1;
f(x);
f1(&y);
}
上面的例子很简单,是指针与值的区别,f不会改变传进来的参数的值,但是f1会改变值。原因是调用f(x)时,函数f会在栈中为变量x创建一个副本i,这样对i的改变并不会影响到x。同理f1(&y),函数f1也会在栈中为&y创建一个副本i,但是由于i是指向y的,所以对i指向的内容的操作同样是对y的操作,所以会改变y.
在看看下面一个函数:
void GetMemory(char *p)
{
p = (char*)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, "hello world");
printf(str);
}
Test函数中调用GetMemory,这样GetMem
阅读(1501) | 评论(0) | 转发(0) |