C ++ char指向char变量的指针

时间:2016-09-14 14:19:04

标签: c++ pointers

我给出了一个方法标题:

char* thisMethod(char* input){}

可以说,

char var = input[0];

?我知道"输入"将以char数组的形式出现。

我很明显C ++指针的新手让我失望。我尝试研究如何使用char指针函数参数,但无法找到足够的特定信息来帮助。谢谢你的帮助。

3 个答案:

答案 0 :(得分:1)

有一种误解可能导致你进一步陷入麻烦:

  

我知道“输入”将采用char数组的形式。

NOPE:在该函数的范围内,input指向字符的指针。该函数无法知道这样的指针来自何处。

如果在调用函数时从数组中获取它而不是pointer to the first element of that array

因为指针有一个允许添加偏移的算术,并且因为应用于指针的[]运算符按定义转换为a[b] = *(a+b),无论代码是什么,如果是a指针,{ {1}}和*a是完美的同义词。

将数组视为 box 序列,将指针视为手的食指

finger 添加偏移量(如a[0])意味着“将其重新指向”并取消引用它(如finger+2 })表示“查看指向”的内容。

指针上的[]操作符只是一次执行两个操作的快捷方式。

阵列是另一个不同的东西。在处理指针时不要想到它们,因为在更复杂的情况下,例如多维数组或多个间接指针 - 表达式a [b] [c]将不再以相同的方式工作。

答案 1 :(得分:0)

只要它在函数内部且input指向有效的内容(不是NULL / nullptr而不是垃圾位置),那么执行char var = input[0];很好。它与char var = *input相同。

P.S如果它应该是一个字符串,我建议使用std::string

答案 2 :(得分:0)

有两种方法可以从指针*[]获取值。以下是等效的:

char var1 = *input;
char var2 = input[0];

当您知道传递数组时,使用括号更常见,因为它允许您提供索引。您需要某种方式来了解数组末尾的位置,以便您不会尝试通过它的任何访问,您的函数缺少重要的细节。