指针也就是内存地址,指针变量是用来存放内存地址的变量,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。本文主要介绍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;
}

推荐文档