使用指针符号打印字符数组

问题描述 投票:0回答:1

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

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

c pointers pointer-arithmetic
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.