如何从 char** 中获取 char*
Posted
技术标签:
【中文标题】如何从 char** 中获取 char*【英文标题】:How to get char* from char** 【发布时间】:2011-05-09 04:12:13 【问题描述】:我知道 & 用于引用对象的地址,所以&char* = char**
。有没有办法扭转这种情况,以便我可以从char**
获得char*
?
所以我有:
char** str; //assigned to and memory allocated somewhere
printf ("%s", str); //here I want to print the string.
我该怎么做呢?
【问题讨论】:
【参考方案1】:您可以使用dereference operator。
解引用运算符对指针变量进行操作,并返回一个与指针地址处的值等价的左值。这称为“取消引用”指针。
char** str; //assigned to and memory allocated somewhere
printf ("%s", *str); //here I want to print the string.
【讨论】:
【参考方案2】:取消引用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) );
【讨论】:
以上是关于如何从 char** 中获取 char*的主要内容,如果未能解决你的问题,请参考以下文章
如何从char *获取pdf文件的最后写入日期(文件在内存中)