下北泽的天使 发表于 2023-8-7 16:41:33

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

#include <stdio.h>

int main()
{
        char* pArray = {
                "Hello",
                "How are you",
                "Fine thank you,And you",
                "I'm fine too"
        };
        char *(*p) = &pArray;
        int i;
        for (i=0;i<4;i++)
        {
                printf("%s\n", (*p));
        }
        return 0;

学习编程中的Ben 发表于 2023-8-7 16:41:45

这段代码中,(*p) 是一个指针数组 p 的解引用操作。p 是一个指向指针数组的指针,而 (*p) 将这个指针数组解引用得到指向 char* 类型的指针。

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

以下是修改后的完整代码:

#include <stdio.h>

int main()
{
    char* pArray = {
      "Hello",
      "How are you",
      "Fine thank you,And you",
      "I'm fine too"
    };
    char* (*p) = &pArray;
    int i;
    for (i = 0; i < 4; i++)
    {
      printf("%s\n", (*p));
    }
    return 0;
}


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

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

如果回答对你有帮助,请给我一个最佳答案!{:10_254:}{:10_254:}{:10_254:}

isdkz 发表于 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个字符串。

陶远航 发表于 2023-8-7 16:41:51

在这段代码中,(*p)[ i] 是指针 p 所指向的数组的第 i 个元素。它的含义是访问指针 p 所指向的数组中的字符串,并将其作为参数传递给 printf 函数的格式化输出。

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

char* pArray = {"Hello","How are you","Fine thank you,And you","I'm fine too"};


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

char *(*p) = &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


希望能帮助你理解这段代码!如果你还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案
页: [1]
查看完整版本: 没搞明白printf("%s\n", (*p)[i]);里面的(*p)[i]是什么意思