0

请告诉我参数 (char* s) 是什么意思?它可以接受一个字符数组还是只接受指针。还请告诉我如何让它接受一个字符串数组,然后根据字符串的长度动态分配内存。

4

4 回答 4

2

从技术上讲,它是指向单个char变量的指针。但是,它也可以是指向值数组的第一个元素的指针char。只要不超出末端,您就可以递增和递减指针以在字符串 (s++或) 中移动。s--

您也可以在不更改指针的情况下使用索引,例如s[14] = 'a';.

char当您处理 C 风格的字符串时,通常会使用它作为指向数组的指针。

此外,char在许多情况下,数组会衰减到指向其第一个元素的指针,例如传递给函数:

void fn (char *s) {
    printf ("%s\n", s);
}
:
char xyz[50];
strcpy (xyz, "Hello");
fn (xyz);

对于 C 中的字符串数组,您可以使用char **、 指针和指针数组char

对于 C++,您可能应该char完全放弃指针(对于字符串)和按指针传递。使用std::string和引用类型。

于 2011-03-15T07:27:49.223 回答
0

我怎样才能让它接受一个字符串数组

C++ 解决方案:

void foo(std::vector<std::string> const& strings);

C解决方案:

void foo(const char **strings);
于 2011-03-15T07:29:53.777 回答
0

char* s 表示 s 是指向存储字符的内存位置的指针。是的,它将接受字符数组,例如在此示例中:

void func(char* s)
{
}

int main()
{
  char arr[10] = {0};

  func(arr);

  return 0;
}

要回答如何使其接受字符串数组,请告诉您对字符串的理解。是 std::string 类还是 char*?

于 2011-03-15T07:30:18.830 回答
0

char* s表示指向单个s变量或 's 数组(更好地称为 char 指针)。还要补充一点,字符串基本上是s 的数组。charcharchar

要将 char 数组传递给接受 char 指针和/或 char 数组的方法,您可以执行以下操作:

void foo(const char** string) {

}

int main() {
    char[] s = "My String";
    foo(&s);
}
于 2011-03-15T07:33:38.097 回答