我给出了一个方法标题:
char* thisMethod(char* input){}
可以说,
char var = input[0];
?我知道"输入"将以char数组的形式出现。
我很明显C ++指针的新手让我失望。我尝试研究如何使用char指针函数参数,但无法找到足够的特定信息来帮助。谢谢你的帮助。
答案 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];
当您知道传递数组时,使用括号更常见,因为它允许您提供索引。您需要某种方式来了解数组末尾的位置,以便您不会尝试通过它的任何访问,您的函数缺少重要的细节。