关于指针数组和数组指针的一些问题
问题如图原来代码
#include <stdio.h>
int main()
{
int temp = {1, 2, 3, 4, 5};
int (*p2) = &temp;
int i;
for (i = 0; i < 5; i++)
{
printf("%d\n", *(*p2 + i));
}
return 0;
}
#include <stdio.h>
int main()
{
char *array = {"FishC", "Five", "Star", "Good", "WoW"};
char *(*p) = &array;
int i, j;
for (i = 0; i < 5; i++)
{
for (j = 0; (*p) != '\0'; j++)
{
printf("%c ", (*p));
}
printf("\n");
}
return 0;
} int (*p2) 定义一个指向5个整型空间的指针
*(*p2+i) *p2是指向一个整体(5个整型空间,是一个地址),i则是的偏移地址,指向整体里面的哪一位;最外面的取这个地址的值
*array和*(*p),前面都多了一个*,所以char *(*p) 定义一个指向5个字符空间的指针的指针(跟前面的对比一下),就是指向上一题所说那个整体的每一个元素的地址(每一个字母的地址)。
而(*p),其实也可以理解为一个二维数组,p是一个指针,所以前面才要加*。
理解指针的指向,要看要具体被赋值的结构是怎么样的,才容易理解。 请看一下这个帖子的我的回复。如果有不明白的地方请继续跟帖。
https://fishc.com.cn/thread-130908-1-1.html
页:
[1]