在相对于指针的地址处存储地址或NULL

时间:2013-11-10 03:50:45

标签: c pointers

我想知道是否有一种方法可以通过在C中使用指针算法在相对于指针的地址处存储NULL值或地址。

int *p;
p = NULL;  // is possible

int *p, *q;
p + 1 = NULL;  // ERROR: lvalue required as left operand of assignment
p + 1 = q;     // ERROR: lvalue required as left operand of assignment

3 个答案:

答案 0 :(得分:3)

你需要做这样的事情,假设p指向你有权写入的有效内存:

int **p = something;
p[1] = NULL;
p[1] = q;

答案 1 :(得分:0)

我不清楚你在问什么。您可以设置指向NULL值的指针,并指向一个NULL值。您不能将指针设置为NULL,然后尝试将其用作值的目标。以下是使用指针算法的示例

 int *p = (int*) malloc(3 * sizeof(int));
 *p = 0; // dereference p and set it's value to 0
 *(p + 1) = 1; // add 1 sizeof(int) to p and set it's value to 1

NULL只是0的别名。

答案 2 :(得分:0)

int *p, *q;

*(unsigned int *)(p + 1) =  (intptr_t)NULL;
// or
*(unsigned int *)(p + 1) =  (intptr_t)q;

这似乎对我有用。