【发布时间】:2021-06-10 15:42:18
【问题描述】:
如果我将指针p 声明为int *p;在主模块中,我可以通过分配p = &a; 来更改p 包含的地址,其中a 是另一个已经声明的整数变量。
我现在想通过以下函数更改地址:
void change_adrs(int*q)
{
int *newad;
q = newad;
}
如果我从主模块调用这个函数
int main()
{
int *p;
int a = 0;
p = &a; // this changes the address contained by pointer p
printf("The address is %u\n", p);
change_adrs(p);
printf("The address is %u\n", p); // but this doesn't change the address
return 0;
}
地址内容不变。对同一任务使用函数有什么问题?
【问题讨论】:
-
您是按值传递指针。如果您需要更改函数内部的指针,请按引用传递...双指针。