标签: pointer-to-pointer

为什么常规交换与指针到指针变量一起使用?

我知道这两个函数之间的区别:Swap(int *x, int *y)vs Swap(int **x, int **y)

但是,我不确定这种代码是如何工作的。如何将指针指向的地址与常规swap()类型交换?

例如,我相信a创建了一个本地指针变量并且它指向&ptr_x,因此当我取消引用时*x它等于&x

那么,temp(并且*a也可以用作整数)可以保存/*b的实际地址,这就是它起作用的原因?xy

void swap(int *a, int *b)
{
   int temp = *a;
   *a = *b;
   *b = temp;
}


int main()
{
   printf("in main:\n");

    int x = 2;
    int y = 8;

    int *ptr_x = &x;
    int *ptr_y = &y;

    printf("ptr_x points to = %p\n", ptr_x);
    printf("ptr_y points to = …
Run Code Online (Sandbox Code Playgroud)

c swap pointers pointer-to-pointer function-definition

1
推荐指数
1
解决办法
76
查看次数

从"class**"到"base class**"的无效转换

我想将一个对象指针的指针传递给一个函数,但是得到了错误

invalid conversion from 'CustomInterface**' to LocalLogger**'
Run Code Online (Sandbox Code Playgroud)

我尝试这样的事情:

class LocalLogger
{}
class CustomInterface: public LocalLogger
{}

foo(LocalLogger** const obj)
{
    // do something
}

bar()
{
    CustomInterface** p_p_obj;
    CustomInterface* p_obj = new CustomInterface();
    p_p_obj = &p_obj;
    foo(p_p_obj);                      // <-- here is the error
}
Run Code Online (Sandbox Code Playgroud)

这是非常简化的,但我需要指针指针.

c++ pointer-to-pointer

0
推荐指数
1
解决办法
653
查看次数

指向数组语法的指针

我有一个关于数组指针语法的问题。好吧,我们知道数组本身就是指针(我们的大学教授说的)所以为什么当我们用另一个指针(将是指向指针的指针)指向它们时,我们使用以下语法:

int array[10]; 
int *pointer = array;
Run Code Online (Sandbox Code Playgroud)

而不是这种语法:

int array[10];
int **pointer = &array;
Run Code Online (Sandbox Code Playgroud)

虽然我知道这使用 malloc 是正确的,但为什么不以正常方式,这是编译器或语法的事情还是我在其他地方错了??

c c++ arrays pointers pointer-to-pointer

0
推荐指数
1
解决办法
351
查看次数

内存地址有多少可能还有另一个内存地址?

我已将整数变量的地址存储在指针中,然后将该先前的地址存储到另一个指针中.我无法理解它是如何工作的.

#include <iostream>

using namespace std;

#include <stdio.h>

int main ()
{
    int  var;
    int  *ptr;
    int  **pptr;

    var = 30;

    /* take the address of var */
    ptr = &var;

   /* take the address of ptr using address of operator & */
    pptr = &ptr;

    /* take the value using pptr */
    printf("Value of var = %d\n", var );
    printf("Value available at ptr = %d\n", ptr );
    printf("Value available at pptr = %d\n", pptr);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c pointers pointer-to-pointer

0
推荐指数
1
解决办法
47
查看次数

a,&a和*a有什么区别?

我想明白之间的差别a,并&a当是一个指针.

在以下示例代码中:

int main()
{
    int b = 100;
    int *a;
    a = &b;
    printf("%d %d %d", a , &a , *a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

根据我的理解,a是给出地址的名称.那是 :

在此输入图像描述

因此,我期待a并且&aa指针时是相同的.但是在输出中,我得到的前两个值(a&a)是不同的.

我哪里错了?

c pointers pointer-to-pointer

-3
推荐指数
1
解决办法
1331
查看次数

-5
推荐指数
1
解决办法
112
查看次数