编译无错误,但为什么不能运行呢?
#include <stdio.h>
void main()
{
int a={0,1,2,3,4,5,6,7,8};
int (*p);
int f(int(*p));
int i,j;
p=a;
f((*p));
}
int f(int(*p))
{
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d\t",*(*(p+i)+j));
}
}
}
如果把int f(int(*p))的内容放到main程序里,运行就没有问题,可我这个函数错在哪里了?而且连调试都无法继续了。
同样的代码,
#include <stdio.h>
void main()
{
int a={0,1,2,3,4,5,6,7,8};
int (*p);
int f(int(*p));
int i,j;
p=a;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d\t",*(*(p+i)+j));
}
}
}
这样运行是正常输出了二维数组的值。 f((*p)); 改为 f( p ); 哥斯拉不说话 发表于 2015-8-22 19:24
f((*p)); 改为 f( p );
f(p)就不是数组了,我传送的是2维数组 傲天 发表于 2015-8-22 19:38
f(p)就不是数组了,我传送的是2维数组
p 可以理解为这个二维数组的首地址 哥斯拉不说话 发表于 2015-8-22 19:43
p 可以理解为这个二维数组的首地址
C语言不可以这样定义 傲天 发表于 2015-8-22 21:00
C语言不可以这样定义
(*p) == 3,传递 (*p) 肯定不对啊,传递的时候不是传递首地址进去吗?那应该怎样定义啊? 哥斯拉不说话 发表于 2015-8-23 09:34
(*p) == 3,传递 (*p) 肯定不对啊,传递的时候不是传递首地址进去吗?那应该怎样定义啊?
哦,是我理解错了,呵呵,太感谢了,是传递错了。
页:
[1]