C语言 输入几个数再输出这几个数 用指针 并且要使用函数

#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"); 
}

温馨提示:答案为网友推荐,仅供参考
第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");
}

第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");
 }

第3个回答  2013-12-26
代码不要写在一行里,太乱了。另外scanf开始的代码是写在那个函数里的? 不是 main 也不是 fun ?

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网