当char *已经存在时,为什么无效*?

时间:2016-02-25 04:34:34

标签: c

char *作为原始通用指针,可以很好地完成工作。据我所知,void *只能char *void *。更重要的是,使用void *进行算术运算的标准是not,这有点容易出错。

那么为什么我们在C中需要char *类型?我们什么时候应该使用它,而不是tableView:heightForRowAtIndexPath:

1 个答案:

答案 0 :(得分:3)

  

void *只能char *

我不确定哪个可以做更多的事情而不是另一个但我确信void*可以做自己的工作char *(或任何其他类型的指针)不能。

void*被称为通用指针。通用指针:

  • 可以容纳任何类型的对象指针
  • 无法解除引用
  • 当您希望指针指向不同时间的不同类型的数据时,尤其有用

如果你努力让char*void*可以做的事情,那么它可能会导致假设。

如果即使编译器没有通知错误或至少有关于不兼容类型的警告,我们仍然不想看到这种代码:

//hi guys, the argument is char* type 
//but you still can pass any other pointer types 
//don't worry!
void func(char * p) {
    ...
}

我们只需要这个:

//this comment is not need, right?
//you know that you can pass any pointer types
void func(void* p) {
    ...
}