这些代码中哪一个是合适的?为什么?
代码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/