数组指针的使用问题,望赐教!
请先看代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[3][4]={0};
int (*p)[4];
{
int i=0,j;
for(p=a;p<p+3;p++)
{
for(i=0,j=0;*p+i<*p+4;i++,j++)
{
(*p)[i]=j;
}
}
printf("\n&(*p)[3]\n",&(*p)[3]);
for(p=a;p<p+3;p++)
for(i=0;*p+i<*p+4;i++)
if( (i+1)%4 == 0 )
printf("\n");
else
printf("%d ,",(*p)[i]);
}
system("pause");
return 0;
}
这程序,问什么输出不了结果???
望高手赐教!!!
[解决办法]
for里面的p<p+3 跳不出循环的.
[解决办法]
单步调试 始终在for(p=a;p<p+3;p++)
{
for(i=0,j=0;*p+i<*p+4;i++,j++)
{
(*p)[i]=j;
}
这里面循环
就说明你这写法不是你想要写得操作了
同时我觉得你为什么用指针地址来比较 我不知道你想怎么做 但你比较地址的话 很少有人这样做吧
[解决办法]
for(p=a;p<p+3;p++)
这句中p<p+3的判断是永远为正确的;进入死循环;
后面p++;但是p<p+3 中的2个p同时改变了。
你再多考虑。
[解决办法]
#include "stdafx.h"
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[3][4]={0};
int (*p)[4];
{
int i=0,j;
for(p=a;p<a+3;p++)
{
for(i=0,j=0;*p+i<*p+4;i++,j++)
{
(*p)[i]=j;
}
}
printf("\n&(*p)[3]\n",&(*p)[3]);
for(p=a;p<a+3;p++){
for(i=0;*p+i<*p+4;i++){
printf("%d ",(*p)[i]);
}
printf("\n");
}
}
system("pause");
return 0;
}
[解决办法]
楼主用的什么编译器,百度文库里面搜一下调试方法,文档一大堆、。
用 GDB 调试程序