关于字符指针一问

# include <stdio.h> int main(void) { char * p[] = {"abc", "def", "ghi"}; //为何这里的指针不需要指向真实的数组即可定义并输出字符串? int i; scanf("%d", &i); printf("%s\n", p[i-1]); return 0; }
把书看了半天。。。没弄明白。是把字符串当作了指针变量的地址来存放了吗?但我给他赋值 &i 编译器又报错。。。。

老师说:会写代码的人多如牛毛,但写得很规范的却不多。代码要规范,养成好习惯~!