【问题标题】: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;
}