Задать вопрос
Diel
@Diel

Есть ли разница между char* и char[число] при передаче аргументов функции?

Есть к примеру такой код:
void process_ptr(char* ptr) {
  for (int i = 0; i < 10; i++)
    ptr[i]++;
}

void process_array(char array[10]) {
  for (int i = 0; i < 10; i++)
    array[i]++;
}

int main() {
  char* ptr = "0123456789";
  char array[10] = "asdfasdfas";

  process_ptr(ptr);
  process_array(array);

  return 0;
}

Интересует вопрос есть ли разница в том, как компилятор обрабатывает эти аргументы? push'ится ли копия массива на стек, или передается его указатель как в первом случае? Если не считать того, что компилятор будет ругаться если не совпадают размеры или пробую переполнить.
  • Вопрос задан
  • 490 просмотров
Подписаться 1 Оценить Комментировать
Решение пользователя longclaps К ответам на вопрос (4)
longclaps
@longclaps
передается его указатель - да
Если не считать того, что компилятор будет ругаться если не совпадают размеры или пробую переполнить - именно.
Ответ написан
Комментировать