这个是+和*的问题吗,*a++的意思不是*(a+1)吗

图片说明为什么是h而不是e呢

因为先取的地址,然后才src+1

要看到你说的效果,需要把src++写在printf的上一行。

你好,如果你要得到e的话,应该打印*src++ ,取当前值,然后再移动地址;(*p)++,取当前值然后再使当前值的数值增一。
而你目前的问题为何是h呢?原因在其你直接用printf函数将其打印,只取了当前值,若要得到e,你可以newline,重新打印*src;
另外一种方法,你可以在printf函数之前先进行,再打印*src++的值。你自己你想测试找出该问题你可以通过打印其地址用%#p,

 #include <stdio.h>
int main (void)
{
    char* src = "hello";
    *src++;
    printf ("%c,%#p\n", *src,*src);
//  printf ("%c,%#p\n", *src, *src);
//  printf ("%c,%#p\n", *src++, *rc);
//  printf ("%c,%#p\n", (*src++), *src);

    getchar();

    return 0;
}
*有两个意思,理论上,作为 乘法 运算符,级别低于 ++(自增)。
作为 指针取值 运算符,级别同 ++(自增)一样。
*p++; 很令人混淆。它不是 *p = *p + 1; 它却是 *p = *(p+1); 
int a[]={1,12,23};
int *p=a;
printf("%d\n",*p++); 输出 a[0]的值 1,后加加:表达式里先用原值,不自增。
出了上面打印语句再自增 *p = *(p+1);
接着打印 printf("%d\n",*p); 打出 a[1]的值 12。

在你这里:
printf("%c",*a++);  //为h
printf("%c",*a);       //为e

运算符优先级的问题, * > ++ 运算符, *p++ 编译器认为是 (*p)++