【问题标题】:Use pointer notation to print a character array使用指针表示法打印字符数组
【发布时间】:2020-02-04 02:14:10
【问题描述】:

我知道对于一个给定的整数数组,一个指向该整数数组的指针,我可以使用这样的方式访问该整数数组:

int main(){

  int x[4] = {0,1,2,3};
  int *ptr;

  ptr = x;

  for(int i = 0; i < 4; i++){
    printf("%d", *(ptr+i));
  }
  return 0;
}

现在说我有一个字符数组,但做同样的事情是行不通的。

int main(){

  char x[4] = "Haha"; 
  char *ptr;

  ptr = x;

  for(int i = 0; i < 4; i++){
    printf("%s", *(ptr+i));
  }
  return 0;
}

显然*(ptr+i) 在第一个代码中每次将指向整数的指针递增 4 个字节。它不适用于第二个代码。如何对字符数组使用相同的符号?我认为这个想法是每次增加一个字符。

【问题讨论】:

  • %s 用于字符数组(以空字符结尾的字符串),%c 用于单个字符。 printf("%c", *(ptr+i));
  • 好的,我明白了,谢谢

标签: c pointers pointer-arithmetic


【解决方案1】:

您在循环后打印每个字母,因此您应该更正您的源代码: printf("%s", *(ptr+i)); 转为 printf("%c", *(ptr+i)); 我认为您应该将char x[4] = "Haha"; 更改为char x[5] = "Haha";,因为在这种情况下它可能不会导致任何错误,但有时您会溢出,小心!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    相关资源
    最近更新 更多