搞不懂第二种初始化的情况
第一种:#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 temp = {1, 2, 3, 4, 5};
int (*p2) = &temp;//这里的初始化明白
char *array] = {"FishC", "Five", "Star", "Good", "WoW"};
char *(*p) = &array;//这里的初始化为什么要二次取值?
先看红色,再去理解为什么还要加* 好好在学一学数组指针把,多看看书或者多查查网上关于数组指针的资料;一个一维数组的指针,一个二维数组的指针你就不明白了? 本帖最后由 jackz007 于 2019-11-24 19:47 编辑
char array 定义 array 是有 5 个整型数元素的一维数组,那么,& array 则代表末维为 5 的二维整型数组,从而,和 char (* p) 定义的指向末维为 5 的二维整型数组的指针 p 的类型相契合。
如果通过 & array 来表达 array,那么,array 可以用 & array 表达,array 可以用 & array 表达。 bin554385863 发表于 2019-11-24 19:22
好好在学一学数组指针把,多看看书或者多查查网上关于数组指针的资料;一个一维数组的指针,一个二维数组的指 ...
我会好好再看看的,谢谢啦 jackz007 发表于 2019-11-24 19:40
char array 定义 array 是有 5 个整型数元素的一维数组,那么,& array 则代表末维为 5 的二维 ...
读懂了,谢谢,但觉得举例子更容易理解。’
页:
[1]