【问题标题】:What does char * mean字符 * 是什么意思
【发布时间】:2011-04-19 01:45:01
【问题描述】:

所以...假设我有这样的功能...

int function( const char *c )
{
 //do something with the char *c here...
}

char *c 是什么意思?我认为我一般都知道字符,但我不明白 * 的作用......或者它如何改变含义。

【问题讨论】:

标签: c++ c char


【解决方案1】:

表示这是一个指向char类型数据的指针。

【讨论】:

  • “char 类型的指针”是一个不寻常的术语,可能有点令人困惑。 “指向字符的指针”,甚至“指向字符类型的指针”会更好。
【解决方案2】:

char *c 表示 c 是一个指针。 c 指向的值是一个字符。

所以你可以说char a = *c。

const 在此示例中表示 c 指向的值不能更改。 所以你可以说c = &a,但你不能说*c = 'x'。如果你想要一个指向 const 字符的 const 指针,你必须说 const char* const c。

【讨论】:

    【解决方案3】:

    指向字符的指针。也就是说,它保存了一个字符所在的地址。

    【讨论】:

      【解决方案4】:

      那是pointer-to-char。既然您知道了这一点,那么您应该阅读以下内容:

      About character pointers in C

      【讨论】:

        【解决方案5】:

        这是一个指向字符的指针。您可能想阅读 C 中的指针,那里有大量的页面可以帮助您做到这一点。例如,http://boredzo.org/pointers/。

        【讨论】:

          【解决方案6】:

          这意味着参数应该是一个字符的pointer。

          您也可以使用 * 取消引用它。

          【讨论】:

            【解决方案7】:

            您可能需要阅读Const correctness 页面以了解指针和常量。

            【讨论】:

              【解决方案8】:

              http://cslibrary.stanford.edu/ 是我在学习 C 中的指针时遇到的最佳资源。阅读所有与指针相关的 pdf 文件并观看 binky 指针视频。

              【讨论】:

                【解决方案9】:

                这是一个指向 char 类型的指针。例如,此函数可以获取 char 的地址并修改 char 或指向字符串的指针的副本。这就是我的意思:

                char c = 'a';
                f( &c );
                

                这将传递c 的地址,以便函数能够更改c 字符。

                char* str = "some string";
                f( str );
                

                这会将“一些字符串”传递给f,但f 不能修改str。

                对于 c++ 来说,这是一个非常基本的东西,而高级语言(如 Java 或 Python)没有。

                【讨论】:

                  猜你喜欢
                  • 2013-04-21
                  • 2013-07-06
                  • 1970-01-01
                  • 1970-01-01
                  • 2018-08-28
                  • 2010-09-29
                  • 2011-04-18
                  • 1970-01-01
                  相关资源
                  最近更新 更多