鱼C论坛

 找回密码
 立即注册
查看: 948|回复: 3

[已解决]没搞明白printf("%s\n", (*p)[i]);里面的(*p)[i]是什么意思

[复制链接]
发表于 2023-8-7 16:41:33 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>

int main()
{
        char* pArray[4] = {
                "Hello",
                "How are you",
                "Fine thank you,And you",
                "I'm fine too"
        };
        char *(*p)[4] = &pArray;
        int i;
        for (i=0;i<4;i++)
        {
                printf("%s\n", (*p)[i]);
        }
        return 0;
最佳答案
2023-8-7 16:41:45
在这段代码中, (*p)[ i]  表示对指针  p  进行解引用,并访问其中的第  i  个元素。



首先,我们定义了一个指针数组  pArray ,其中每个元素都是指向  char  类型的指针。然后,我们定义了一个指向指针数组的指针  p ,并将其指向  pArray  的地址。



在循环中,我们通过  (*p)[ i]  来访问  pArray  中的每个元素。 (*p)  解引用指针  p ,得到指针数组  pArray ,然后使用  [ i]  运算符来访问其中的第  i  个元素。



最后,我们使用  printf  函数将每个元素打印出来,使用  %s  格式化字符串来输出  char  类型的指针所指向的字符串。



因此, printf("%s\n", (*p)[ i])  的作用是打印  pArray  中第  i  个字符串。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-7 16:41:45 | 显示全部楼层
这段代码中,(*p)[i] 是一个指针数组 p 的解引用操作。p 是一个指向指针数组的指针,而 (*p) 将这个指针数组解引用得到指向 char* 类型的指针。

所以 (*p)[i] 表示指针数组 pArray 中第 i 个元素的值。

以下是修改后的完整代码:
#include <stdio.h>int main(){    char* pArray[4] = {        "Hello",        "How are you",        "Fine thank you,And you",        "I'm fine too"    };    char* (*p)[4] = &pArray;    int i;    for (i = 0; i < 4; i++)    {        printf("%s\n", (*p)[i]);    }    return 0;}
运行代码后,将会按顺序打印出指针数组 pArray 中的四个字符串。

希望能帮助到你!如果还有其他问题,请随时提问。

如果回答对你有帮助,请给我一个最佳答案!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-7 16:41:45 | 显示全部楼层    本楼为最佳答案   
在这段代码中, (*p)[ i]  表示对指针  p  进行解引用,并访问其中的第  i  个元素。



首先,我们定义了一个指针数组  pArray ,其中每个元素都是指向  char  类型的指针。然后,我们定义了一个指向指针数组的指针  p ,并将其指向  pArray  的地址。



在循环中,我们通过  (*p)[ i]  来访问  pArray  中的每个元素。 (*p)  解引用指针  p ,得到指针数组  pArray ,然后使用  [ i]  运算符来访问其中的第  i  个元素。



最后,我们使用  printf  函数将每个元素打印出来,使用  %s  格式化字符串来输出  char  类型的指针所指向的字符串。



因此, printf("%s\n", (*p)[ i])  的作用是打印  pArray  中第  i  个字符串。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-7 16:41:51 | 显示全部楼层
在这段代码中,(*p)[ i] 是指针 p 所指向的数组的第 i 个元素。它的含义是访问指针 p 所指向的数组中的字符串,并将其作为参数传递给 printf 函数的格式化输出。

让我们来分析一下代码的各个部分:
char* pArray[4] = {"Hello","How are you","Fine thank you,And you","I'm fine too"};

这里定义了一个包含 4 个指向字符的指针的数组 pArray,并初始化了每个指针指向一个字符串。
char *(*p)[4] = &pArray;

这里定义了一个指向指针数组的指针 p,并将其初始化为指向 pArray 的地址。
for (i=0;i<4;i++){
    printf("%s\n", (*p)[ i]);
}

这个循环遍历 p 所指向的数组,使用 printf 函数打印出每个字符串。(*p)[ i] 表示访问 p 所指向的数组中的第 i 个元素,并将其作为字符串参数传递给 printf 函数。

因此,整个程序的输出将是 pArray 数组中的每个字符串一行输出。输出结果将是:
Hello
How are you
Fine thank you,And you
I'm fine too

希望能帮助你理解这段代码!如果你还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-7 11:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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