将int指针设置为等于常规int

时间:2014-03-30 02:22:16

标签: c pointers atoi

我正在尝试将指针(processNum)设置为等于常规int(processNumTemp)。我怎样才能做到这一点?我尝试做processNum = processNumTemp,因为我试图将指针设置为非指针,所以会产生错误。我怎样才能做到这一点?以下是我的代码:

int *processNum = (int *)malloc(sizeof(12));
  int processNumTemp;

  processNumTemp = atoi(argv[1]);

  processNum = processNumTemp;

3 个答案:

答案 0 :(得分:1)

processNum = &processNumTemp;

这会将processNumTemp的地址存储到processNum中。我相信这就是你想要做的。然后,您可以通过取消引用指针来获取值。那就是用 *processNum

答案 1 :(得分:1)

当您将指针称为processNum时,您指的是其地址,而不是其内容。如果要更改变量指向的内容,则应使用*processNum,否则您将更改指针指向的,而不是内容它指向的是什么。

我们说processNumTemp = 74。在您的代码中,您告诉processNum它现在应该指向最有可能无效的内存地址74。你没有告诉它 store 74在它当前指向的内存地址(这可能是你想要的)。

因此,您可以通过执行以下操作来更改所指向的数据:

*processNum = processNumTemp;

或者您可以更改指针指向

的内容
procesNum = &processNumTemp;

前者复制存储在processNumTemp地址的值,并将其替换为先前存储在processNum指向的位置的值。

后者不会更改processNum指向的数据,而是更改指向的。在这种情况下,我们正在使它与processNumTemp指向的相同。

答案 2 :(得分:0)

De-reference你的指针访问存储在那里的数据,然后将它分配给相同类型的东西。

*processNum = processNumTemp;
// * is the pointer de-referencing operator
// once you have exposed the data, now assign it
// to something of the same type.