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;}
免责声明:以上内容(如有图片或视频亦包括在内)有转载其他网站资源,如有侵权请联系删除