如何从char**获取char*

4

我知道 & 被用来引用对象的地址,所以 &char* = char**。有没有办法反过来,从 char** 得到 char*

所以我有:

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

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

我该如何做到这一点?
3个回答

17
你可以使用解引用运算符解引用运算符作用于指针变量,并返回等同于指针地址上的值的左值。这被称为"解引用"指针。
char** str; //assigned to and memory allocated somewhere

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

5
解除对 str 的引用:
print ("%s", *str); /* assuming *str is null-terminated */

3
如果您有一个指向类型为T的对象的指针T*,并且想要获取类型为T的对象T,则可以使用运算符*。它返回指针所指向的对象。
在这种情况下,您拥有指向类型为char*的对象的指针(即(char*)*),因此可以使用*
另一种方法是使用操作符[],用于访问数组。 *s等于s[0],而s[n]等于*(s+n)
如果您的char** s是一个char*数组,则使用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) );

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接