my_string(char * s)是什么意思?

时间:2011-03-15 07:24:53

标签: c++ c memory-management stringstream

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

4 个答案:

答案 0 :(得分:2)

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

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

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

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

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

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

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

答案 1 :(得分:0)

  

如何让它接受一个字符串数组

C ++解决方案:

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

C解决方案:

void foo(const char **strings);

答案 2 :(得分:0)

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

void func(char* s)
{
}

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

  func(arr);

  return 0;
}

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

答案 3 :(得分:0)

char* s表示s 指向指向单个char变量或char数组(更好地称为char)指针)。另外,一个字符串基本上是char s。

的数组

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

void foo(const char** string) {

}

int main() {
    char[] s = "My String";
    foo(&s);
}