s ++和*s ++之间有什么区别吗?

Ant*_*t's 0 c pointers

我是C的初学者,让我说我有这样的代码:

#include <stdio.h>
void test(char *t)
{
     t++;
    *t = 'e';
}

void main()
{
    char a[] = "anto";
    printf("%c\n",a[1]);
    test(a);
    printf("%c\n",a[1]);
}
Run Code Online (Sandbox Code Playgroud)

这是示例代码,我正在弄清楚指针是如何工作的.根据我的说法:

t++;
Run Code Online (Sandbox Code Playgroud)

在上面的代码将递增数组的地址a1 char在调用函数test.很好,现在我知道*它用于检索指针指向的对象值.

但奇怪的是,当我改变t++

*t++;
Run Code Online (Sandbox Code Playgroud)

我得到的输出和以前一样.我字面意思是这个,上面的语句 *t++;应该改变内容只知道,根据*运算符的定义.

但这又改变了地址t.怎么会?我在哪里弄错了这个概念?

提前致谢

Ern*_*ill 10

表达式*t++被解析为*(t++)- ++仍然适用于指针,而不是内容.值t++是增量前指针本身的值,而值*t++是增量前指针指向的值.