c的迷惑不解,快救救我啊

来源:百度知道 编辑:UC知道 时间:2024/05/16 00:15:16
#include<stdio.h>
void main()
{
char *name[]={"sdfs","esdf","fg","hjdfg","dfwdrw"};
char **p;
int i;
for(i=0;i<5;i++)
{
p=name+i;
printf("%s\n",*p);
}
}在*p不是指的是p的地址吗?p不是指向的是地址的地址吗?那么p取地址不是还是地址吗?怎么回事啊,这是*p怎么是内容了呢?

char **p 是指定义了一个名为 p 的指向 char 指针的指针
指针的名字是 p, 不是 *p, 也不是 **p

这是 C 的一个老问题了.

name 本身就是一个 char ** 类型的指针
所以 *p 其实是一个 char * 类型的指针, 指向某个字符串.

一点也没错

**p指的是指向指针的指针,也就是它获得的是一个指针的地址。*p显示另一个指针的地址。然后你最后少个括号哦