2011-03-15 106 views
0

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

回答

2

从技术上讲,它是指向单个变量的指针。但是,它也可以是指向数组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 **,一个指向指针的数组和指针的数组。

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

0

我怎样才能使

C++溶液这个接受字符串的数组:

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

℃溶液:

void foo(const char **strings); 
0

字符* s表示s是指向存储字符的内存位置的指针。是的,它会接受字符数组,这个例子在这样:

void func(char* s) 
{ 
} 

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

    func(arr); 

    return 0; 
} 

要回答如何使它接受一个字符串数组,请告诉你的字符串明白。它是std :: string类还是char *?

0

char* s意味着s指向到单个char变量或的char的一个数组(更好地为字符指针)。还要补充一点,一个字符串基本上是一个数组char s。

要传递字符数组到接受字符指针和/或字符的阵列的方法,可以这样做:

void foo(const char** string) { 

} 

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

@Elite,这应该是'FOO(&S)',无? – paxdiablo 2011-03-15 07:42:09

+0

@paxdiablo,是的....感谢您的参与。 – 2011-03-15 07:44:35