Что делает указатели быстрее массивов?

Я погуглил и нашел следующий синтаксис указателей

  void main()
 {
  char a[10]="helloworld";
  char *p=a;
  printf("%c",p[0]);
 }

Я не знал, что указатели могут быть доступны и в форме массива. Я использовал * для операций с указателями Я использовал a[0] для массивов и *p для операций с указателями, поэтому я не знал двух других вещей. Теперь из вышесказанного мы можем получить доступ ко второму элементу массива любым из следующих способов

  printf("%C",a[1]);   \\ this is the array
  printf("%c",*(a+1));  \\ this is the array using *
  printf("%c", p[1]);     \\ using the pointer 
  printf("%C",*(p+1));    \\ using the pointer

Теперь мне интересно: какая операция быстрее? Я читал, что операции с указателями выполняются быстрее, поэтому C остается на вершине для быстрого выполнения, и что ни один другой язык не может превзойти его быстродействие.

А теперь реальный вопрос: Что делает операции с указателями быстрее?

1) *(p+0) *(Value at address), что делает трюк или

2) p[0]

, так как мы используем

 *(a+1) or *(p+1) both are same 
  a[1] or p[1] both are same 

, когда обычный массив может быть использован как *(a+1)( который использует * значение по адресу) как указатель. почему мы используем указатели для более быстрых операций? Когда оба имеют один и тот же синтаксис, когда обычный массив и указатель используют * в этих синтаксисах, почему указатели быстрее?

Но ребята, пожалуйста, скажите мне тогда, почему мы используем указатели? Мой профессор сказал мне, что указатели быстрее, потому что они указывают на адрес, а не на переменную, которую нужно искать в локации.

9
задан dckrooney 31 August 2011 в 18:12
поделиться