我创建了一个接收int *的方法,这个值将分配给另一个int *。 当我调用该方法时,我输入一个整数,但是我收到了转换错误。
我尝试使用(int *)转换int,但程序崩溃。
add(hashTable, 8, 0);
void add(hash_table *hashTable, int *num, int value)
如何在方法中为int *指定整数值?
答案 0 :(得分:1)
首先,您应该了解int *
的含义。这意味着你在内存中的某个地方有一个int,而不是将该int的值复制到一个函数中,你传入该变量的地址。在第一个变量之前,您无法传递变量的地址。因此,简单的解决方案是创建一个变量并为该变量赋予您想要的值。然后你可以传入该变量的地址。
int n = 8;
add(hashTable, &n, 0);
答案 1 :(得分:0)
int是整数值,int *是指向整数的指针。换句话说,int *是内存中指向整数的位置。为了将int赋给int *,需要将int放入int *指向的内存位置。要做到这一点,你只需将整数放在int *指向的内存位置(假设已经分配了内存)
int *my_pointer = (int *)malloc(sizeof(int)); // allocate memory
*my_pointer = my_val;
(你必须在这里分配内存,否则它会崩溃)
或
int my_val = 8; // the memory is allocated here, so you are safe
int *my_pointer = &my_val;