[英]How to get char* from char**
我明白&用于引用对象的地址,所以&char* = char**
。 有没有反过来这样我可以从char**
获得char*
?
所以我有:
char** str; //assigned to and memory allocated somewhere
printf ("%s", str); //here I want to print the string.
我该怎么做呢?
您可以使用取消引用运算符 。
解引用运算符对指针变量进行操作,并返回与指针地址处的值等效的l值。 这称为“解除引用”指针。
char** str; //assigned to and memory allocated somewhere
printf ("%s", *str); //here I want to print the string.
取消引用str
:
print ("%s", *str); /* assuming *str is null-terminated */
如果你有一个T*
(称为指向T
类型对象的指针)并且想要得到一个T
(一个T
类型的对象),你可以使用运算符*
。 它返回指针指向的对象。
在这种情况下,你有一个指向char*
类型对象的指针(就是它: (char*)*
)所以你可以使用*
。
另一种方法可能是使用operator []
,即用于访问数组的那个。 *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) );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.