繁体   English   中英

为什么人们会使用像char *和buf这样的东西?

[英]Why do people use some thing like char*&buf?

我正在阅读有关Stack Overflow的帖子,我看到了这个功能:

    advance_buf( const char*& buf, const char* removed_chars, int size );

char*& buf在这里意味着什么?为什么人们会使用它?

这意味着buf是对指针的引用,因此可以更改其值(以及它指向的区域的值)。

我在C中相当陈旧,但AFAIK在C中没有引用,这段代码是C ++ (注意问题最初标记为

例如:

void advance(char*& p, int i) 
{       
    p += i;  // change p
    *p = toupper(*p); // change *p
}

int main() {
    char arr[] = "hello world";
    char* p = arr; // p -> "hello world";
    advance(p, 6);
    // p is now "World"
}

编辑:在评论中@brett询问你是否可以为buff分配NULL ,如果是,那么在指针上使用引用的优势在哪里。 我在这里提出答案以提高可见度

您可以为buff分配NULL 这不是错误。 大家都在说的是,如果你使用char **pBuff那么pBuff可能是NULLchar**类型)或*pBuff可能是NULLchar*类型)。 当使用char*& rBuff rBuff仍然可以为NULL (类型为char* ),但是没有类型为char**实体可以为NULL

buf (C ++)对指针的引用。 您可以在调用advance_buf的函数中使用const char *foo ,现在advance_buf可以更改foo指针,这些更改也将在调用函数中看到。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM