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