*++p有点不理解
#include <stdio.h>int main()
{
char matrix = {
'I', 'l', 'o', 'v', 'e',
'F', 'i', 's', 'h', 'C',
'.', 'c', 'o', 'm', '!'
};
char *p;
p = &matrix;
printf("%c", *p);
printf("%c", *p++);
printf("%c", *++p);//这一步不太懂
printf("\n");
return 0;
} 这个代码示例声明了一个 3x5 字符矩阵,并将指针 p 指向矩阵中的某个元素。接下来,代码使用 printf 函数打印 p 指向的字符以及其邻近的字符。关于 *++p 这一步,我来为你解释一下。
首先,这是代码中的矩阵:
I l o v e
F i s h C
. c o m !
指针 p 初始化为指向矩阵的第一行第四个元素(索引 ,即字符 'v'):
I l o v e
^
F i s h C
. c o m !
接下来,依次执行以下 printf 语句:
1. `printf("%c", *p);`:打印 p 指向的字符,即 'v'。
2. `printf("%c", *p++);`:打印 p 指向的字符,即 'v',然后将 p 向后移动一个字符。现在 p 指向字符 'e'。
I l o v e
^
F i s h C
. c o m !
3. `printf("%c", *++p);`:首先,将 p 向后移动一个字符(现在 p 指向 'F'),然后打印 p 指向的字符。
I l o v e
F i s h C
^
. c o m !
所以,最后输出的字符串将是 "vvF"。
请注意,这个代码中的 `*p++` 和 `*++p` 的行为略有不同。`*p++` 先对指针解引用,然后再将指针向后移动;而 `*++p` 先将指针向后移动,然后再对其解引用。
页:
[1]