我想知道是否有一种方法可以通过在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
答案 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;
这似乎对我有用。