关于字符数组的定义问题

请问这个地方:
若有定义char * str[ ]={“Python”, “SQL”, “JAVA”, “PHP”, “C++”};
则表达式* str[1] > *str[3]比较的是:字符S和字符P。
这个是一个字符指针数组,也就是str存的是首元素的地址,但是首元素是Python,而这是一个字符串,和char类型不符啊,这个怎么理解呢?莫非这个是二维数组吗?

  • 在 C 中,可以使用字符数组来存储字符串。 例如,下面是一个定义字符数组的示例:
char str[10] = "Hello";
  • 上述定义声明了一个字符数组 str,其中有 10 个字符。 同时,这个定义也初始化了字符数组的前 5 个字符,将其设置为 "Hello"。
  • 在 C 中,字符数组是一种静态分配内存的数据类型。 也就是说,在编译时就已经确定了字符数组的大小,并且不能在运行时改变。 因此,在定义字符数组时需要指定其大小,例如上面的代码中的 10。
  • 另外,在 C 中,字符数组的末尾必须以 NULL 字符 (\0) 结尾,表示字符串的结束。 因此,在上面的代码中,实际上存储了 6 个字符:"H", "e", "l", "l", "o", "\0"。
  • 在 C++ 中,也可以使用字符数组来存储字符串。 但是,C++ 中还有一种类型叫做 std::string,可以用来存储字符串。 std::string 类型是一种动态分配内存的数据类型,可以在运行时改变大小。