Hmm, let's see shall we...
matilda:~ jeremyp$ cat > foo.c
int main(){
    int arr[2]={30,40};
    printf("%dn",i[arr]);
    return 0;
}
matilda:~ jeremyp$ cc foo.c
foo.c:4:5: warning: implicitly declaring library function 'printf' with type 'int (const char *, ...)'
    printf("%dn",i[arr]);
    ^
foo.c:4:5: note: please include the header <stdio.h> or explicitly provide a declaration for 'printf'
foo.c:4:18: error: use of undeclared identifier 'i'
    printf("%dn",i[arr]);
                 ^
1 warning and 1 error generated.
Yes indeed, i is undefined.  You either need 
int i = 1;
before that statement or it isn't an i, it's a 1.  Let's try that...
matilda:~ jeremyp$ cat >foo.c
#include <stdio.h> // Stops the warning
int main(){
    int arr[2]={30,40};
    printf("%d\n",1[arr]); // Also added a \ so we get a line feed.
    return 0;
}
matilda:~ jeremyp$ cc foo.c
matilda:~ jeremyp$ ./a.out
40
That works now.