我正在尝试将指针(processNum)设置为等于常规int(processNumTemp)。我怎样才能做到这一点?我尝试做processNum = processNumTemp,因为我试图将指针设置为非指针,所以会产生错误。我怎样才能做到这一点?以下是我的代码:
int *processNum = (int *)malloc(sizeof(12));
int processNumTemp;
processNumTemp = atoi(argv[1]);
processNum = processNumTemp;
答案 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.