用指针参数按引用调用函数时的问题,基础
我看书中讲到用指针参数按引用调用函数,是这样的:
...
void abc(int *j)
{
...
...
}
void main()
{
...
int i = 0;
abc(&i);
...
}
我不明白的就是,abc的参数不是*j么,应该是指针j所对应的存储地址上存储的值啊,
但是我调用abc的时候,传的参数是&i啊,应该是i的存储地址啊,
一个存储地址,一个int的值,可以对应么
[解决办法]
具体的传递过程是
int i = 0; //定义一个 i 变量, 这个变量的值是0
abc ( &i ); // 首先获取 i的地址,然后调用 abc函数,把i的地址传递过去
void abc(int* j) //这里接收到的是一个地址,没有冲突,因为j本身表示的是一个地址
{
...
// 在这里可以通过 *j 来获得 i的值,同样,也能通过对*j 赋值进而改变i的内容,因为他们是在同一快内存区域进行操作。
}
...