c - 将地址作为函数参数传递

标签 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);
}

可以传递指针的地址吗?

最佳答案

你问:

Which of these codes is appropriate and why ?

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

您可以将其更改为:

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

一切都会好的。

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

您还问:

is it okay to pass pointer's address ?

我很清楚这个问题与您发布的代码有何关系。

关于c - 将地址作为函数参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24237012/

相关文章:

c - 如何修复此代码中的 'Segmentation fault (core dumped)' ?

将部分 C 风格字符串转换为 int

c - 同时使用aio_write和write

c++ - 指向包含指向 vector 指针的结构的 vector

c - 在 C 中传递数组指针并从不同数组中获取值

c++ - C 等价于 C++ 指针密集型例程

c - 关于传递 3 维数组以在 C 中运行的歧义

c - 使用 GCC + ARM 减少递归期间的堆栈使用

按降序创建两个数组,分别为第一个偶数和第二个奇数

c - 在不知道长度的情况下释放指针