如何从 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** 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) );

【讨论】:

以上是关于如何从 char** 中获取 char*的主要内容,如果未能解决你的问题,请参考以下文章

如何从char *获取pdf文件的最后写入日期(文件在内存中)

如何从非 ascii 字符中获取 char 值

如何使用 scanf 从用户输入中获取字符串( char * ),由双引号分隔并包含空格 [关闭]

从 C++ 库方法返回的“char*”获取 C# 字符串?

swift 从字符串中获取char

从字符串中获取 char * 或 const char * 数据会中断 16 个字符或更长的字符串