【问题标题】:What is the meaning of a "*" before a string in C?C中字符串前的“*”是什么意思?
【发布时间】:2015-01-03 22:20:36
【问题描述】:

我试图理解这个算法,它就地反转 C 风格的字符。我不明白* 在字符串之前的上下文和“char * end”的上下文中表示什么。感谢您的帮助!

void reverse(char *str) {
    char * end = str;
    char tmp;
    if (str) {
        while (*end) {
        ++end;
        }
        --end;
        while (str < end) {
            tmp = *str;
            *str++ = *end;
            *end-- = tmp;
        }
    }
}

【问题讨论】:

  • 这是一个指向 char 类型的指针...已经有一段时间了,但它似乎在做一些指针运算,在连续的内存位置之间移动
  • 那个标签 [java] 正确吗?
  • 这不会在 Java 中编译。
  • 那是不是 Java。那是好老C
  • 我在字符串前没有看到任何 *。

标签: c string pointers


【解决方案1】:

当您在字符串前使用“”时,它是一个字符指针.. 这也被视为字符数组,在“”之后输入的字符串将是该数组的名称。

【讨论】:

    【解决方案2】:

    星号表示pointer

    char tmp
    

    这是一个角色

    char * str
    

    这是一个指向 char(在本例中为 char 数组)的指针。

    tmp = *str;
    

    表示字符tmp被指针str指向的字符串数组的第一个字符填充。

    【讨论】:

    • this is a pointer to a char array. 不,它是指向字符的指针。该字符可能是也可能不是字符数组中的第一个字符。
    【解决方案3】:

    你真的对学习很感兴趣,那么你需要先学习c基础,然后是指针:

    这是一个非常快速的指针教程:http://www.programiz.com/c-programming/c-pointers 然后通过这个并将字符串视为指针:https://www.cs.bu.edu/teaching/c/string/intro/

    我会建议通过它们一次来帮助您理解其他语言的许多内容。 :)

    【讨论】:

      猜你喜欢
      • 2011-09-17
      • 2014-12-23
      • 2011-02-05
      • 2020-02-02
      • 2013-12-13
      • 1970-01-01
      • 2012-10-07
      相关资源
      最近更新 更多