将地址作为函数参数传递

时间:2014-06-16 05:17:49

标签: c pointers

哪些代码适合?为什么?

代码1:

void fun(int *p)
{
  *p=200;
}

main(){
int *i_ptr;
fun(i_ptr);
printf("%d", *i_ptr);
}

代码2:

void fun(int *p)
{
  *p=200;
}

main(){
int i;
fun(&i);
printf("%d", i);
}

可以传递指针的地址吗?

1 个答案:

答案 0 :(得分:1)

你问:

  

哪些代码适合?为什么?

第一个将导致未定义的行为,因为i_ptr尚未初始化为指向有效的内存。

您可以将其更改为:

int main(){
   int i;
   int *i_ptr = &i;
   fun(i_ptr);
   printf("%d", *i_ptr);
}

就可以了。

顺便说一下,我还添加了int作为main的返回类型。

您还问:

  

是否可以传递指针的地址?

我很清楚这个问题是如何与您发布的代码相关的。