输入什么输出什么
#include <stdio.h> void initarray(int *parr,int size) { int i; for(i=0;i<size;i++) { printf("请输入第%d个元素的数据:\n",i+1); scanf("%d",parr++);//parr就是地址了(指针),就不用再取地址了 } } void printarray(int *parr,int size) { int i; for(i=0;i<size;i++) { printf("%d ",*parr++);//对地址(指针)取值,打出来 } } int main() { int arry[5]; int size = sizeof(arry)/sizeof(arry[0]); initarray(arry,size);//arry 数组名就是数组地址、首元素地址 printarray(&arry[0],size);//&arry[0]是取首元素地址与上面相同 return 0; }
输出结果
逆序输入输出
#include <stdio.h> void initarray(int *parr,int size) { int i; for(i=0;i<size;i++) { printf("请输入第%d个元素的数据:\n",i+1); scanf("%d",parr++);//parr就是地址了(指针),就不用再取地址了 } } /* void revangearry(int *parr,int size)//将输入的数据进行逆序输出 { int i,j; int tmp; for(i=0;i<size/2;i++) { j = size-1-i; tmp = parr[i]; parr[i] = parr[j]; parr[j] = tmp; } } */ //上面函数换种写法,更贴近与指针的写法 void revangearry(int *parr,int size)//将输入的数据进行逆序输出 { int i,j; int tmp; for(i=0;i<size/2;i++) { j = size-1-i; tmp = *(parr+i);//数组地址按照数组类型直接偏移,也是得到了与上面同等效果 *(parr+i) = *(parr+j);//按照数组类型进行地址偏移,在相应地址进行更改了数值 *(parr+j) = tmp; } } void printarray(int *parr,int size) { int i; for(i=0;i<size;i++) { printf("%d ",*parr++);//对地址(指针)取值,打出来 } } int main() { int arry[5]; int size = sizeof(arry)/sizeof(arry[0]); initarray(arry,size);//arry 数组名就是数组地址、首元素地址 revangearry(arry,size);//逆序处理 printarray(&arry[0],size);//&arry[0]是取首元素地址与上面相同 return 0; }
输出结果