포인터 학습 (3)

배열 이름을 함수 매개 변수로 사용합니다. 배열 이름은
배열의 첫 번째 주소를 나타내므로 배열 이름이 실제 매개 변수로 전달 될 때 형식 매개 변수는 실제 매개 변수 유형의 포인터 변수를 저장할 수 있습니다.

대표:

  1. void fun (int arr [], int n);
  2. void fun (int * arr, int n);
    두 표현은 동일합니다.

설명이
조합에있어서의 가상 어레이 이름은 함수 매개 변수로서 사용되는 경우 배열 이름이 나타내는 때문에, C 언어의 함수 호출 "값 전사"방법. 변수 이름은 함수 매개 변수로서 사용되는 변수의 값이 전달 채택 때 실제 배열의 첫 번째 요소 주소이므로 전달 된 값이 주소이므로 형식 매개 변수는 포인터 변수 여야합니다.

예 :
배열 a에 n 개의 정수를 역순으로 저장합니다.

#include<stdio.h>
void reverse(int a[],int n);
int main()
{
    
    
	int a[10]={
    
    2,4,3,1,5,0,9,8,7,6};
	int i;
	printf("输出原始数据!\n");
	for(i=0;i<10;i++)
	{
    
    
		printf("%d",a[i]);
	}
    reverse(a,10);
	printf("按相反顺序存放后\n");
	for(i=0;i<10;i++)
	{
    
    
		printf("%d",a[i]);
	}
	printf("\n");
	return 0;
}
void reverse(int a[],int n)
{
    
    
	int t,i,j,m;
	m=(n-1)/2;
	for(i=0;i<=m;i++)
	{
    
    
		j=n-1-i;
		t=a[i];
		a[i]=a[j];
		a[j]=t;
	}
}

하위 기능 알고리즘은 일반적인 유형의 반감기에 속합니다.
하위 기능의이 부분에서 포인터를 사용할 수 있습니다. 주소가 누적 될 수 있음을 알려주세요. 해당 시퀀스 번호를 추가하여 요소를 나타낼 수 있습니다.

void reverse(int *a,int n)
{
    
    
	int *p,t,*i,*j,m;
	m=(n-1)/2;
	i=a;//不加数字时是指数组第一个元素
	j=a-1+n;//指向的是数组最后一个元素
	p=a+m;
	for(;i<=p;i++,j--)
	{
    
    
		
		t=*i;
		*i=*j;
		*j=t;
	}
}

추천

출처blog.csdn.net/yooppa/article/details/112796000