Используйте обозначение указателя для печати массива символов - PullRequest
0 голосов
/ 04 февраля 2020

Я знаю, что для данного целочисленного массива, указателя на этот целочисленный массив, я могу получить доступ к целочисленному массиву, используя что-то вроде этого:

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 байта каждый раз. Это не работает для второго кода. Как использовать те же обозначения для символьного массива? Я думаю, что идея состоит в том, чтобы увеличивать один символ каждый раз.

1 Ответ

2 голосов
/ 04 февраля 2020

Вы печатаете каждую букву после al oop, поэтому вы должны исправить свой исходный код: printf("%s", *(ptr+i)); на printf("%c", *(ptr+i)); Я думаю, что вы должны изменить char x[4] = "Haha"; на char x[5] = "Haha";, потому что, возможно, в этом случае это не вызывает любые ошибки, но иногда вы будете переполнены, будьте осторожны!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...