首页 > 解决方案 > 指向作为函数参数的指针的指针

问题描述

我有以下代码:

void change_adrs(int **q)
{
    int * otheraddess;
    *q = otheraddress; 
}

我无法理解这个任务:*q = otheraddress;

谁能帮我解释一下。为什么我们不能使用另一个赋值,例如:

**q = otheraddress; 
*q = *otheraddress;
q = &otheraddress; 

标签: cpointers

解决方案


看下的赋值和*q = otheraddress;看下面的一样:

int x = 4;
int y = x;

您取 2 个相同类型的变量并在它们之间进行分配。

在您的情况下,您使用 int 变量的地址。 int *otheraddress; 是一个变量,他可以获得一个地址(& 运算符)到 int 变量,例如:

int x = 4;
int *p = &x; //p<=the address of x

并且int **q;可以获得一个可以获取 int 地址的变量的地址。比如你的第三个作业(应该可以正常工作)

int x = 4;
int *p = &x;//p<=the address of x
int **q = &p;//q<=the address of p

对于其他任务:

**q = otheraddress;您尝试将 int* 分配给 int**

*q = *otheraddress;您尝试将 int 分配给 int *


推荐阅读