读书人

数组指针的使用有关问题望赐教

发布时间: 2012-11-09 10:18:48 作者: rapoo

数组指针的使用问题,望赐教!
请先看代码:
#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 调试程序


探讨
楼层正解!
果然如此!!!
【注:有一个小请求,就是我知道有一个所谓的单步调试和什么断点调试,这是怎么回事?要看什么书才能学会?我的C语言书上没有!!!另外能否告知下步骤或者推荐几本相关的书】

引用:
for(p=a;p<p+3;p++)

这句中p<p+3的判断是永远为正确的;进入死循环;

后面p++;但是p<p+3 中的2个p同时改变了。

你再多考虑……

读书人网 >C语言

热点推荐