I was googling and found the following syntax for pointers
void main()
{
char a[10]="helloworld";
char *p=a;
printf("%c",p[0]);
}
I didnt know that Pointers can be accessed in the array form too. I used to use * for pointer operations
I used a[0] for arrays and *p for pointer operations, which is why I didnt know the other 2 things.
Now from the above, we can access the second element of array in any one of the following ways
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
Now I wonder: which is the faster operation? I read that operations using pointers are faster, and that this is why C stays at the top for fast execution and that no other language can beat its fastness.
Now the real question: What makes the pointer operations faster?
1) *(p+0) the *(Value at address) that makes the trick or
2) p[0]
since we use
*(a+1) or *(p+1) both are same
a[1] or p[1] both are same
when a normal array can be used as *(a+1)( which uses * value at address) like a pointer. why do we use pointers for faster operations? When both have the same syntax, when normal array and pointer uses * in those syntaxes why pointers are faster?
But guys please tell me then why we use pointers ? My professor told me pointers are faster because they point to address rather a variable should be searched in the location.
I wouldn’t actually expect
*(ptr + offset)to be faster thanptr[offset]. In fact, on my machine, the following functions are compiled into exactly the same assembly code:which (cleaned up) looks like:
(gcc 4.5.0, x86_64, no optimisations). Or with
-O3