鱼C论坛

 找回密码
 立即注册
查看: 1195|回复: 1

[已解决]*++p有点不理解

[复制链接]
发表于 2023-4-27 10:57:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>

int main()
{
        char matrix[3][5] = {
                'I', 'l', 'o', 'v', 'e',
                'F', 'i', 's', 'h', 'C',
                '.', 'c', 'o', 'm', '!'
        };
        char *p;

        p = &matrix[0][3];

        printf("%c", *p);
        printf("%c", *p++);
        printf("%c", *++p);//这一步不太懂
        printf("\n");

        return 0;
}
最佳答案
2023-4-27 11:05:54
这个代码示例声明了一个 3x5 字符矩阵,并将指针 p 指向矩阵中的某个元素。接下来,代码使用 printf 函数打印 p 指向的字符以及其邻近的字符。关于 *++p 这一步,我来为你解释一下。

首先,这是代码中的矩阵:
I l o v e
F i s h C
. c o m !

指针 p 初始化为指向矩阵的第一行第四个元素(索引 [0][3],即字符 '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` 先将指针向后移动,然后再对其解引用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-27 11:05:54 | 显示全部楼层    本楼为最佳答案   
这个代码示例声明了一个 3x5 字符矩阵,并将指针 p 指向矩阵中的某个元素。接下来,代码使用 printf 函数打印 p 指向的字符以及其邻近的字符。关于 *++p 这一步,我来为你解释一下。

首先,这是代码中的矩阵:
I l o v e
F i s h C
. c o m !

指针 p 初始化为指向矩阵的第一行第四个元素(索引 [0][3],即字符 '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` 先将指针向后移动,然后再对其解引用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 20:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表