题目代码如下
#include
int main(){
int a[10]={0,1,2,3,4,5,6,7,8,9};
int i,*p1,*p2,*p3;
p1=a,p2=a+5,p3=a+7; //相当于 p1=&a[0],p2=&a[5],p3=&a[7];
printf("%ld,%ld,%ld\n",p1,p2,p3); //输出指针的值(数组元素地址值)
printf("%d,%d,%d\n",*p1,*p2,*p3); //输出指针指向变量的值
printf("%d,%d\n",p1-p2,p2-p1); //指针减法
printf("%d,%d\n",p1>p2,p1==a); //指针与指针的关系
for(p1=a;p110;p1++) //通过指针遍历数组
printf("%d ",*p1);
return 0;
}
要求用指针做
首先可以用一个循环获取一行整数到数组中;然后使用一个int指针指向数组最后一个元素,然后逐个往数组前面打印各个值即可。代码如下:
参考链接:
C 库函数 – scanf() | 菜鸟教程
#include <stdio.h>
int main(void){
int nums[50];
int i=0;
// scanf("%d",&nums[i]); // 读取一个整数到数组
// while(getchar()!='\n'){ //如果没有遇到换行符,则循环读取整数到数组nums中
// i++; // 指向数组下一个元素位置
// scanf("%d",&nums[i]);
// }
while(scanf("%d",&nums[i])!=EOF){ //如果没有遇到换行符,则循环读取整数到数组nums中
i++; // 指向数组下一个元素位置
}
int * j=nums+i-1; // 用一个int指针指向数组最后一个元素位置
while(j>=nums){ //如果int指针j的地址值大于等于数组首元素的地址,则循环打印指针j指向的元素值
if(j==nums){
printf("%d",*j); //打印指针j指向的值
} else{
printf("%d ",*j); //打印指针j指向的值
}
j--; //指针j指向数组前一个位置元素的地址
}
//printf("end");
return 0;
}