鱼C论坛

 找回密码
 立即注册
查看: 1571|回复: 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  个字符串。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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

以下是修改后的完整代码:
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     char* pArray[4] = {
  5.         "Hello",
  6.         "How are you",
  7.         "Fine thank you,And you",
  8.         "I'm fine too"
  9.     };
  10.     char* (*p)[4] = &pArray;
  11.     int i;
  12.     for (i = 0; i < 4; i++)
  13.     {
  14.         printf("%s\n", (*p)[i]);
  15.     }
  16.     return 0;
  17. }
复制代码

运行代码后,将会按顺序打印出指针数组 pArray 中的四个字符串。

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

如果回答对你有帮助,请给我一个最佳答案!
小甲鱼最新课程 -> https://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  个字符串。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

让我们来分析一下代码的各个部分:

  1. char* pArray[4] = {"Hello","How are you","Fine thank you,And you","I'm fine too"};
复制代码


这里定义了一个包含 4 个指向字符的指针的数组 pArray,并初始化了每个指针指向一个字符串。

  1. char *(*p)[4] = &pArray;
复制代码


这里定义了一个指向指针数组的指针 p,并将其初始化为指向 pArray 的地址。

  1. for (i=0;i<4;i++){
  2.     printf("%s\n", (*p)[ i]);
  3. }
复制代码


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

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


希望能帮助你理解这段代码!如果你还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 21:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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