还是指针的问题

#include "stdio.h" int main() { char a[3][3]={"ab","cd","ef"}; char *p; p=a; printf("%s\n",a); printf("%s\n",p); return 0; }这里为什么会有error C2440: '=' : cannot convert from 'char [3][3]' to 'char *'错误,而改成char[3]={"ab"}就不会有这个错误了呢?
#include <stdio.h> #include <stdlib.h> #include <conio.h> int main(void) { char a[3][3] = { "ab", "cd", "ef" }; char* p = &(a[0][0]); printf_s("%s\n\n", a); for (int index = 0; index < _countof(a); ++index) { printf_s("%s\n", p); p += sizeof(a[index]); } _getch(); return 0; }
#include <stdio.h> #include <stdlib.h> #include <conio.h> int main(void) { char* a[] = { "ab", "cd", "ef" }; char** p = a; printf_s("%s\n\n", *a); for (int index = 0; index < _countof(a); ++index) { printf_s("%s\n", *p++); } _getch(); return 0; }