我有一个指针数组。我将它们分配给所有为NULL。我更改了一些指针,使其中一些指向一个NULL的元素,其中一些指向一个元素。我正在遍历数组中的所有指针。我的问题是,如何检查实际指针是否为NULL而不是它们指向的元素是NULL?
我希望能够区分NULL指针和指向NULL的指针。这是一个迭代:
if (ptrptr == NULL) {
// The actual pointer is NULL, so set it to point to a ptr
ptrptr = ptr;
} else {
// The pointer points to SOMETHING, it may be NULL, it may not be, but the ptrptr itself is not NULL
// Do something
}
我将ptrptr设置为指向ptr,并且因为ptr为NULL,所以即使它指向某个东西,我也会为ptrptr获取NULL。
答案 0 :(得分:1)
您需要分配内存来保存指针,并取消引用它。
if (ptrptr == NULL) {
// The actual pointer is NULL, so set it to point to a ptr
ptrptr = malloc(sizeof(ptr));
*ptrptr = ptr;
} else {
// The pointer points to SOMETHING, it may be NULL, it may not be, but the ptrptr itself is not NULL
// Do something
}
答案 1 :(得分:0)
例如,假设您的对象最终是int
。因此ptr的类型为int *
,而ptrptr的类型为int**
。这意味着赋值ptrptr = ptr
是错误的,您的编译器应该已经注意到并给了您一个警告。
例如:
#define N 100
int* my_arr[N]; //My array of pointers;
//initialize this array somewhere...
int **ptrptr;
for(ptrptr = my_arr; ptrptr < my_arr + N; ptrptr++){
ptr = get_object();
*ptrptr = ptr; //This is equivalent to my_array[i] = ptr
}