没错但这是个微妙的区别。基本上,前者:char amessage[] = "now is the time";定义一个数组,其成员驻留在当前作用域的堆栈空间中,而:char *pmessage = "now is the time";定义一个指针,该指针驻留在当前作用域的堆栈空间中,但它引用其他地方的内存(在这个指针中,“Now is time”存储在内存的其他地方,通常是字符串表)。另外,请注意,由于属于第二个定义(显式指针)的数据没有存储在当前作用域的堆栈空间中,因此未指定数据的确切存储位置,不应对其进行修改。编辑:正如Mark,gman和Pavel所指出的,在这些变量中使用Address-of运算符时,也存在差异。例如,&pMessage返回char*类型的指针,或chas的指针,而&amessage返回char(*)[16]类型的指针,或指向由16个字符组成的数组的指针(与char*一样,需要像litb指出的那样取消引用)。