p[0]的含义是字符指针。也就是“AAAAA”这个字符串的指针,你复制没成功是你没有个a这个分配内存 a = (char *)malloc(6),这下子就可以装下字符串“AAAAA”包括结束符没有显示。然后执行stcpy函数,就可以成功了。a = P【0】让字符串指针的赋值,这个时候,a就指向了这个"AAAAA"的首地址,所以是可以的。
a没有被初始化是个无效的指针, 只有用malloc或者new申请一块内存并让a指向这块内存(a = new char[6])才能用strcpy将p的内存的内容拷贝到a指向的内存, a = p[0]的话就是a和p[0]都指向同一块内存
char *p = "..."或者char p[] = "..."都能让p指向程序预申请的一块内存并且这块内存存着字符串, 此时第二个p就能当作指针, 和第一种的区别是第二个总是会被当成数组对待于是不能被直接赋值; 所以用不着写成char *p[]了