Chinaunix首页 | 论坛 | 博客
  • 博客访问: 480897
  • 博文数量: 76
  • 博客积分: 5196
  • 博客等级: 大校
  • 技术积分: 1414
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-10 18:43
个人简介

转了个圈,又回来了

文章分类

全部博文(76)

文章存档

2013年(1)

2011年(8)

2010年(9)

2009年(22)

2008年(36)

我的朋友

分类: 嵌入式

2009-11-24 20:01:46

函数的参数有很多种,有的是传值,有的是指针,有的是引用,有的是指向指针的指针。下面对各种用法做个总结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
阅读(1468) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~