Хотите ли вы назначить прямой адрес переменной-указателю? Вам лучше использовать операторы &
или +
, ++
для известных функций или переменных, чтобы получить адреса. Это небезопасно и не рекомендуется жестко кодировать адрес в коде. Каждый раз, когда программа загружается в память, это может быть другое пространство памяти, поэтому жестко закодированный адрес вызовет ошибку сегментации.
См. Следующий пример. Назначение 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;
}