这个是什么?
char *(*p) = &array;array是一个数组吧。
那个是一个包含指针的数组,长度为5,数组中的每一个指针都指向一个指针。
你把它指向了一个数组。 无符号整形 发表于 2018-8-1 14:48
array是一个数组吧。
那个是一个包含指针的数组,长度为5,数组中的每一个指针都指向一个指针。
你把它指 ...
这是全部代码#include <stdio.h>
#include <string.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; j < 5; j++)
{
if (i > strlen((*p)) - 1)
{
break;
}
printf("%c ", (*p));
}
printf("\n");
}
return 0;
} 向上的蜗牛 发表于 2018-8-1 15:33
这是全部代码
那么那个是一个包含指针的数组,长度为5,数组中的每一个指针都指向一个指针(包含指针的数组array的每一个元素(它们是指针))。 无符号整形 发表于 2018-8-1 15:35
那么那个是一个包含指针的数组,长度为5,数组中的每一个指针都指向一个指针(包含指针的数组array的每一 ...
为什么这样就不行呢{:10_284:}
(*p) = &array 向上的蜗牛 发表于 2018-8-1 15:41
为什么这样就不行呢
(*p) = &array
因为array是一个指针,它指向一个数组,然而那个(*p)却是指向一个包含5个数据(每一个数据不是指针)的数组。
然而*(*p)是一个指向一个包含(5个内容)都是指向指针的数组。(注意这里是1个数组,5个内容!!)
是不是很绕口……{:10_291:} 本帖最后由 zqianglh 于 2018-8-3 23:31 编辑
char array 字符数组
char *array 指针数组
char (*p) 指针p指向字符数组
char *(*p) 指针p指向指针数组
或许你问的是这个 字符串怎么能保存在指针里!
C语言 语法允许指针数组(类似一个2级指针 指针-->char )直接用数组指针存储char
指针数组常用于指向不同长度的字符串,这样处理字符串方便些。 char *(*p)=&array;
好像已经解决了,我来答一下我的理解~
这里涉及到符号的优先级~
本来*的优先级小于[]的,没括号应该是p。
但因为*在括号内。所以,*p代表一个指针,然后再与结合,变成(*p),即一个指针,指向一个具有5个元素的整形数组~读p是数组的指针
最后再与*结合,取值~*(*p)
而&array是取地址的值,
char *(*p)=&array;指将array的值赋值给char *(*p)~~
页:
[1]