新彩天欢迎您!
幻海优品

C语言指针的使用运算与数组相关编程实例

1、C语言指针

参考文档:C语言指针

2、指针求最大值和最小值

用指针求含有十个元素的数组最大值和最小值,代码如下,

#include<stdio.h>int main() { int a[10]={13,2,4,5,11,32,9,8,7,10};int max, min,inx,i;max = min = a[0]; //假设第1个元素即是最大值也是最小值。int *p = a;  //遍历数组,找出数组a中的最大数和最小数for (inx=0; inx!=sizeof(a) / sizeof(int); ++inx) {if (*(p+inx) > max) max = *(p + inx);  else if (*(p+inx) < min) min = *(p+inx);}printf("%d %d", max, min);return 0;}

3、使用指针实现数组遍历

通过使用指针的运算来实现数组的遍历,及相关条件的判断。可以使用指针代替数组,因为变量指针可以递增或递减,

1)指针自增

#include <stdio.h> const int MAX = 3; int main (){   int  var[] = {10, 100, 200};   int  i, *ptr;    /* 指针中的数组地址 */   ptr = var;   for ( i = 0; i < MAX; i++)   {       printf("存储地址:var[%d] = %p\n", i, ptr );      printf("存储值:var[%d] = %d\n", i, *ptr );       /* 指向下一个位置 */      ptr++;   }   return 0;}

2)指针自减

#include <stdio.h> const int MAX = 3; int main (){   int  var[] = {10, 100, 200};   int  i, *ptr;    /* 指针中最后一个元素的地址 */   ptr = &var[MAX-1];   for ( i = MAX; i > 0; i--)   {       printf("存储地址:var[%d] = %p\n", i-1, ptr );      printf("存储值:var[%d] = %d\n", i-1, *ptr );       /* 指向下一个位置 */      ptr--;   }   return 0;}

3)指针比较

#include <stdio.h> const int MAX = 3; int main (){   int  var[] = {10, 100, 200};   int  i, *ptr;    /* 指针中第一个元素的地址 */   ptr = var;   i = 0;   while ( ptr <= &var[MAX - 1] )   {       printf("存储地址:var[%d] = %p\n", i, ptr );      printf("存储值:var[%d] = %d\n", i, *ptr );       /* 指向上一个位置 */      ptr++;      i++;   }   return 0;}

4、将整型数组中n个数按反序存放

使用指针将数组中n个数,按照相反的顺序存放,代码如下,

#include <stdio.h>int main(int argc, char *argv[]){int a[] = {1, 3, 5, 7, 9};int *p, *q, n, t;p = a;n = sizeof(a) / sizeof(int);q = &a[n-1];while(p < q){t = *p;*p = *q;*q = t;p++;q--;}for(t = 0; t < n; t++)printf("%d ",a[t]);puts("");return 0;}

免责声明:以上内容(如有图片或视频亦包括在内)有转载其他网站资源,如有侵权请联系删除