C语言中为什么函数形参中二级指针和一级指针指输出的结果一样
#include <stdio.h>void show(char **x,int n)
{
int i;
for (i=0;i<n;i++)
{
puts(x);
}
}
int main()
{
char *book[]={
"《荒野的呼唤》",
"《时光之轮》",
"《老人与海》",
"《教父》",
"《基督山伯爵》",
"《地海传说》",
};
int size=sizeof(book)/sizeof(book);
char **p=book;
show(p,1);
show(book,size);
return 0;
} 你的意思是把**x改为*x是一样的吗?还是怎么理解? newu 发表于 2017-6-8 18:17
你的意思是把**x改为*x是一样的吗?还是怎么理解?
是的 额 sizeof(book) 和sizeof(book)是一个地址 ,数组名字 指向的是第一个地址
所以 他俩是一个地址是同样的长度类型 都是4字节 所以当他们相除的时候 结果是1;所以输出的结果相同
没有工具 没敲代码 可能不对. 也可能我没理解你要问的问题.... 怎么会一样?你试试这个,肯定编译不过去
#include <stdio.h>
void show(char *x,int n)
{
int i;
for (i=0;i<n;i++)
{
puts(x);
}
}
int main()
{
char *book[]={
"《荒野的呼唤》",
"《时光之轮》",
"《老人与海》",
"《教父》",
"《基督山伯爵》",
"《地海传说》",
};
int size=sizeof(book)/sizeof(book);
char **p=book;
show(p,1);
show(book,size);
return 0;
}
页:
[1]