【问题标题】:How to get char* from char**如何从 char** 中获取 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.

我该怎么做呢?

【问题讨论】:

    标签: c string pointers char printf


    【解决方案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) );
        

        【讨论】:

          猜你喜欢
          • 2018-09-12
          • 1970-01-01
          • 2013-09-30
          • 2018-11-14
          • 1970-01-01
          • 1970-01-01
          • 2021-01-31
          • 2015-09-14
          • 1970-01-01
          相关资源
          最近更新 更多