如何从char **获取char *

时间:2010-11-12 16:16:05

标签: c string pointers char printf

我理解&用于引用对象的地址,以便&char* = char**。无论如何要反过来这样我才能从char*得到char**

所以我有:

char** str; //assigned to and memory allocated somewhere

printf ("%s", str); //here I want to print the string.

我将如何做到这一点?

3 个答案:

答案 0 :(得分:17)

您可以使用dereference operator

解除引用运算符对指针变量进行操作,并返回与指针地址处的值等效的l值。这称为“解除引用”指针。

char** str; //assigned to and memory allocated somewhere

printf ("%s", *str); //here I want to print the string.

答案 1 :(得分:5)

取消引用str

print ("%s", *str); /* assuming *str is null-terminated */

答案 2 :(得分:3)

如果你有一个T*(称为指向T类型的对象的指针)并且想要获得T(类型为T的对象),则可以使用该运算符*。它返回指针指向的对象。

在这种情况下,你有一个指向char*类型对象的指针(就是它:(char*)*),所以你可以使用*

另一种方法可能是使用运算符[],即用于访问数组的运算符。 *s等于s[0],而s[n]等于*(s+n)

如果您的char** schar*的数组,则使用printf( "%s", *str ),您只能打印第一个[]。在这种情况下,如果您使用for( i = 0; i < N; ++ i ) print( "%s\n", str[i] );

,则可能更容易阅读
 for( i = 0; i < N; ++ i ) print( "%s\n", *(str+i) );

虽然它在语义上等同于:

{{1}}