Я погуглил и нашел следующий синтаксис указателей
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)( который использует * значение по адресу) как указатель. почему мы используем указатели для более быстрых операций? Когда оба имеют один и тот же синтаксис, когда обычный массив и указатель используют * в этих синтаксисах, почему указатели быстрее?
Но ребята, пожалуйста, скажите мне тогда, почему мы используем указатели? Мой профессор сказал мне, что указатели быстрее, потому что они указывают на адрес, а не на переменную, которую нужно искать в локации.