请告诉我参数 (char* s) 是什么意思?它可以接受一个字符数组还是只接受指针。还请告诉我如何让它接受一个字符串数组,然后根据字符串的长度动态分配内存。
问问题
1100 次
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 的数组。char
char
char
要将 char 数组传递给接受 char 指针和/或 char 数组的方法,您可以执行以下操作:
void foo(const char** string) {
}
int main() {
char[] s = "My String";
foo(&s);
}
于 2011-03-15T07:33:38.097 回答