【问题标题】:How to assign double* value to double* queue[i]?如何将 double* 值分配给 double* queue[i]?
【发布时间】:2020-07-18 02:23:42
【问题描述】:

我想将整数 1 分配给 double* queue[i].. 我需要先将 int 1 转换为 double* 类型值,然后才能将其分配给 queue[i].. 如何编码?

【问题讨论】:

标签: c++ pointers types variable-assignment


【解决方案1】:

我想将整数 1 分配给 double* queue[i]

我认为您的意思是将值 1 添加到队列中:

queue[i] = new double(1.0);

分配直接地址是不同的story

我需要先将 int 1 转换为 double* 类型的值,然后才可以 将其分配给队列[i]

这不是您的动态queue 的工作方式。它为每个double 存储新分配的内存地址。 new 运算符用于此目的,它将返回必要的指针,您只需要正确进行动态内存分配即可。

【讨论】:

    【解决方案2】:

    你想给一个指针变量分配一个直接地址吗?您最好在已知函数或变量上使用& 运算符或+++ 运算符来获取地址。这是不安全的,不建议在代码中硬编码地址。每次程序加载到内存中,可能是不同的内存空间,所以硬编码地址会导致分段错误。

    请参阅以下示例。不推荐使用queue[1] 分配或queue[2] 分配。

    #include <stdio.h>
    #define MAX_SIZE 10
    
    void print(double *p, int i)
    {
        printf("queue[%d]=%p\t*queue[%d]=%.2f\n", i, p, i, *p);
    }
    
    int main()
    {
        double *queue[MAX_SIZE];
        double dval = 3.5f;
        int ival = 1;
    
        queue[0] = &dval;
        print(queue[0], 0); 
        // queue[0]=0x7ffee2bfca20  *queue[0]=3.50
    
        queue[1] = &ival;
        print(queue[1], 1); 
        // queue[1]=0x7ffee2bfca1c  *queue[1]=0.00
    
        queue[2] = ((double *)1);
        print(queue[2], 2); 
        // zsh: segmentation fault
    
        return 0;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-03
      • 2013-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多