当前位置: 代码迷 >> C语言 >> 一个关于指针的小程序,不知道什么意思(已解决)
  详细解决方案

一个关于指针的小程序,不知道什么意思(已解决)

热度:138   发布时间:2007-08-10 23:17:30.0
一个关于指针的小程序,不知道什么意思(已解决)
这个程序到底在干嘛呀?请各位高手帮忙解释一下,输出结果为多少?
#include <stdio.h>
main()
{ int *p[5];
int *ptr,i;
if((ptr=malloc(100*sizeof(int)))!=NULL)
{p[0]=ptr;
for(i=1;i<5;i++)
p[i]=p[i-1]+7;
for(i=0;i<10;i++)*ptr++=i;
for(i=0;i<5;i++)
printf("%3d",*p[i]);
}
}

[此贴子已经被作者于2007-11-3 13:58:34编辑过]

搜索更多相关的解决方案: 指针  

----------------解决方案--------------------------------------------------------
以下是引用yqiong在2007-8-10 23:17:30的发言:
这个程序到底在干嘛呀?请各位高手帮忙解释一下,输出结果为多少?
#include <stdio.h>
main()
{ int *p[5];
int *ptr,i;
if((ptr=malloc(100*sizeof(int)))!=NULL)----------这里前,面要加(int *)
{p[0]=ptr;
for(i=1;i<5;i++)
p[i]=p[i-1]+7;
for(i=0;i<10;i++)*ptr++=i;
for(i=0;i<5;i++)
printf("%3d",*p[i]);
}
}

对这样的程序无语!!


----------------解决方案--------------------------------------------------------
这程序是不是有问题啊。。顺序乱了。。
----------------解决方案--------------------------------------------------------

这是谭浩强习题汇编书的一个原题,提供的答案是0 7 14 21 28
但我上机运行了下,有调试错误呢


----------------解决方案--------------------------------------------------------
对这个程序:垃圾!!
----------------解决方案--------------------------------------------------------
恩,垃圾
----------------解决方案--------------------------------------------------------
以下是引用yqiong在2007-8-10 23:17:30的发言:
这个程序到底在干嘛呀?请各位高手帮忙解释一下,输出结果为多少?
#include <stdio.h>
main()
{ int *p[5];
int *ptr,i;
if((ptr=malloc(100*sizeof(int)))!=NULL)----------这里改!!
{p[0]=ptr;
for(i=1;i<5;i++)
p[i]=p[i-1]+7;
for(i=0;i<10;i++)*ptr++=i;------------这里应该是i<100就对了
for(i=0;i<5;i++)
printf("%3d",*p[i]);
}
}


----------------解决方案--------------------------------------------------------

以下是引用viky2003在2007-8-12 9:27:41的发言:

以下是引用yqiong在2007-8-10 23:17:30的发言:
这个程序到底在干嘛呀?请各位高手帮忙解释一下,输出结果为多少?
#include <stdio.h>
main()
{ int *p[5];
int *ptr,i;
if((ptr=malloc(100*sizeof(int)))!=NULL)----------这里改!!这应怎么改?
{p[0]=ptr;
for(i=1;i<5;i++)
p[i]=p[i-1]+7;
for(i=0;i<10;i++)*ptr++=i;------------这里应该是i<100就对了
for(i=0;i<5;i++)
printf("%3d",*p[i]);
}
}
能解释下整个程序的思想吗?


----------------解决方案--------------------------------------------------------
malloc 前面加(int *);

ptr分配100个int地址,值依次是0,1,2。。。。。99!
然后p[0]为首地址的值0,p[1]为第8个地址的值7,p[2]为15个地址的值14。。。。。。!

很明显阿!!
----------------解决方案--------------------------------------------------------
以下是引用viky2003在2007-8-12 13:37:41的发言:
malloc 前面加(int *);

ptr分配100个int地址,值依次是0,1,2。。。。。99!
然后p[0]为首地址的值0p[1]为第8个地址的值7,p[2]为15个地址的值14。。。。。。!

很明显阿!!

这地方不懂呢!
if((ptr=malloc(100*sizeof(int)))!=NULL)
{p[0]=ptr;
for(i=1;i<5;i++)
p[i]=p[i-1]+7; /* 只是为数组的每个元素分配了7个存储空间吧*/
for(i=0;i<10;i++)*ptr++=i; /*这一步才是给数组赋值吧!*/


----------------解决方案--------------------------------------------------------
  相关解决方案