如何使用C中的方法将int赋值给int *?

时间:2016-03-08 04:01:05

标签: c pointers methods int

我创建了一个接收int *的方法,这个值将分配给另一个int *。 当我调用该方法时,我输入一个整数,但是我收到了转换错误。

我尝试使用(int *)转换int,但程序崩溃。

add(hashTable,  8, 0);

void add(hash_table *hashTable, int *num, int value)

如何在方法中为int *指定整数值?

2 个答案:

答案 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;