como isso:
char a[10]="fabio";
3[a]='9';
puts(a);
funciona com um compilador DevC++, pq??
como isso:
char a[10]="fabio";
3[a]='9';
puts(a);
funciona com um compilador DevC++, pq??
a[b] , em C , é a abreviatura para *(a + b). Portanto, você pode escrever a[3] ou 3[a].
Em C++ isso não é tão verdade assim, já que você pode sobreescrever o operador []. Nesse caso, essa propriedade não vale. Vou mostrar que para o operador [] definido pela classe std::string, isso não vale:
#include <string>
#include <iostream>
using namespace std;
int main (int argc, char *argv[]) {
string s = "abcde";
// Isto está OK (obtém o 4o. caracter de s)
cout << s[3] << endl;
// A linha a seguir provoca o seguinte erro:
// Microsoft C++:
// TesteArray2.cpp(8) : error C2677: binary '[' : no global operator found which takes type 'std::string' (or there is no acceptable conversion)
// g++:
// TesteArray2.cpp: In function 'int main(int, char**)':
// TesteArray2.cpp:10: error: no match for 'operator[]' in '3[s]'
cout << 3[s] << endl;
}