【问题标题】:How to increase the base address of this string?如何增加这个字符串的基地址?
【发布时间】:2017-08-22 14:48:15
【问题描述】:

我正在尝试获取指向此数组的第四个元素的指针,但这样做时我不断收到类型不匹配错误。我究竟做错了什么?我该如何解决这个问题?

    int main()
    {
        char str[]="0111010";
        str = str+3;
        printf("%s",str);
        return 0;
    }

【问题讨论】:

  • char * ptr = str+3; printf("%s",ptr);
  • 你不能写入数组的地址......所以str = str+3;是无效的。你需要一个新的指针。 char * str2 = str + 3; 或直接printf("%s",str+3); 如果它只是你想要的打印

标签: c arrays string pointers


【解决方案1】:

线

str = str + 3;

不是合法的 C 代码。在 C 中,您不能将一个数组变量分配给另一个。 (没有根本原因导致该语言无法完成这项工作;只是不受支持。)

话虽如此,表达式str + 3 是一个完全合法的表达式,它产生指向数组第三个(零索引)元素的指针。你可以通过写来打印它

printf("%s\n", str + 3);

或写作

char* midPtr = str + 3;
printf("%s\n", midPtr);

任何一种方法都有效。如果您只需要执行一次,第一个可能更容易,如果您打算多次使用该指针,第二个可能会更容易。

【讨论】:

  • 语言不能完成这项工作并没有根本原因 - 避免额外间接不是一个正当理由吗?
  • 哦,绝对的。该评论更多地针对“可以设想一种可行的语言”,而不是“愚蠢的 C,你设计得不好。”
猜你喜欢
  • 2010-12-03
  • 2013-08-11
  • 1970-01-01
  • 1970-01-01
  • 2018-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-18
相关资源
最近更新 更多