使用指针表示法打印字符数组

Use pointer notation to print a character array

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

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 字节的指针递增。它不适用于第二个代码。如何对字符数组使用相同的表示法?我认为这个想法是每次增加一个字符。

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