没搞明白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; 这段代码中,(*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:}
在这段代码中, (*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个字符串。 在这段代码中,(*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]