#include
void fun(int *p,int n); void main() { int a[5]; fun(a,5); } void fun(int *p,int n) { int *ptemp=p; for(;p<ptemp+5;p++) { scanf("%d",p); } for(;p<ptemp+5;p++) { printf("%4d",*p); } printf("\n"); } 编译没有错误 执行出来总是内存不能writen,为什么啊?
#include "stdio.h"
void fun(int *p,int n);
void main()
{
int a[5];
fun(a,5);
}
void fun(int *p,int n)
{
int *ptemp=p;
for(;p<ptemp+5;p++)
{
scanf("%d",p);
}
//由于执行p++,此时p已经指向数组最后一个元素了,需要还原到第一个位置,不然你读取的位置就不对
//所以报内存地址不能读取的问题
p=ptemp; //加上这句,让指针重指回数组首地址
for(;p<ptemp+5;p++)
{
printf("%4d",*p);
}
printf("\n");
}
void fun(int *p,int n);
void main()
{
int a[5];
fun(a,5);
}
void fun(int *p,int n)
{
int *ptemp=p;
for(;p<ptemp+5;p++)
{
scanf("%d",p);
}
//由于执行p++,此时p已经指向数组最后一个元素了,需要还原到第一个位置,不然你读取的位置就不对
//所以报内存地址不能读取的问题
p=ptemp; //加上这句,让指针重指回数组首地址
for(;p<ptemp+5;p++)
{
printf("%4d",*p);
}
printf("\n");
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-12-26
#include<stdio.h>
void fun(int *p,int n);
void main()
{
int a[5];
fun(a,5);
}
void fun(int *p,int n)
{
int *ptemp=p;
for(;p<ptemp+5;p++)
scanf("%d",p);
for(p=ptemp;p<ptemp+5;p++)
printf("%4d",*p);
printf("\n");
}
void fun(int *p,int n);
void main()
{
int a[5];
fun(a,5);
}
void fun(int *p,int n)
{
int *ptemp=p;
for(;p<ptemp+5;p++)
scanf("%d",p);
for(p=ptemp;p<ptemp+5;p++)
printf("%4d",*p);
printf("\n");
}
第2个回答 2013-12-26
void fun(int *p,int n);
void main()
{
int a[5];
fun(a,5);
}
void fun(int *p,int n)
{
int *ptemp=p;
for(;ptemp<p+5;ptemp++)//修改ptemp就行,这样逻辑也比较清晰
{
scanf("%d",ptemp);
}
for(ptemp=p;ptemp<p+5;ptemp++) //ptemp加上初始化
{
printf("%4d",*ptemp);
}
printf("\n");
}
void main()
{
int a[5];
fun(a,5);
}
void fun(int *p,int n)
{
int *ptemp=p;
for(;ptemp<p+5;ptemp++)//修改ptemp就行,这样逻辑也比较清晰
{
scanf("%d",ptemp);
}
for(ptemp=p;ptemp<p+5;ptemp++) //ptemp加上初始化
{
printf("%4d",*ptemp);
}
printf("\n");
}
第3个回答 2013-12-26
代码不要写在一行里,太乱了。另外scanf开始的代码是写在那个函数里的? 不是 main 也不是 fun ?