1次元配列とポインタ

はじめに:1次元配列、配列パラメーター↔パラメーターとしてのポインター変数の場合、添え字メソッドとポインターメソッドを使用して配列要素を参照できます。


1.配列パラメーター

?下付きの方法(わかりやすい)

住所:&[i]

元素:a[i]​

?ポインタメソッド(推奨)

地址:a+i​

元素:*(a+i)

?コンパイラは[i]を*(a + i)として解釈するため、時間がかかるため、[i]を*(a + i)として直接書き込むと実行効率が向上します。


2.仮パラメーターとしてのポインター変数

?下付きメソッド

住所:&p [i]

要素:p [i]

?ポインタ

住所:p + i

要素:*(p + i)


2つの対比

  • p + 1?p ++
  1. どれも単純な+1ではありません、1は1つのメモリユニットを指します
  2. p ++↔p= p + 1、pの値が変化
  3. p + 1はpの値を変更しません
  • a?p
  1. aはアドレス定数です
  2. pはアドレス変数です

概要:1次元配列の場合、

メイン関数で、配列名を引数として使用し、

呼び出された関数では、配列が仮パラメーターとして使用され、参照要素が使用されます

下付き表記→わかりやすい

ポインター方式→効率アップ

ポインタ変数を使用する必要はありません


配列パラメーター

1.1下付きの方法

void InputArray(int a[], int n)   /* 形参声明为数组,输入数组元素值 */
{
	int  i;
	for (i=0; i<n; i++)
	    scanf("%d", &a[i]);       /* 用下标法访问数组元素 */	
}

void OutputArray(int a[], int n)  /* 形参声明为数组,输出数组元素值 */
{
	int  i;
	for (i=0; i<n; i++)
	    printf("%4d", a[i]);      /* 用下标法访问数组元素 */
	printf("\n");	
}

1.2ポインターメソッド

void InputArray(int a[], int n)   /* 形参声明为数组,输入数组元素值 */
{
	int  i;
	for (i=0; i<n; i++)
		scanf("%d", a+i);          /* 这里a+i等价于&a[i] */	
}

void OutputArray(int a[], int n)   /* 形参声明为数组,输出数组元素值 */
{
	int  i;
	for (i=0; i<n; i++)
		printf("%4d", *(a+i));     /* 这里*(a+i)等价于a[i] */
	printf("\n");	
}

仮パラメーターとしてのポインター変数

1.3下付きの方法

void InputArray(int *p, int n)   /* 形参声明为指针变量,输入数组元素值 */
{	
   int i;
	for (i=0; i<n; i++)
		scanf("%d", &p[i]);      /* 形参声明为指针变量时也可以按下标方式访问数组 */       	
}

void OutputArray(int *p, int n)  /* 形参声明为指针变量,输出数组元素值 */
{
	int i;
	for (i=0; i<n; i++)
		printf("%4d",p[i]);      /* 形参声明为指针变量时也可以按下标方式访问数组 */        
	printf("\n");	
}

1.4ポインターメソッド

void InputArray(int *p, int n)   /* 形参声明为指针变量,输入数组元素值 */
{	
	int i;
	for (i=0; i<n; i++)
		scanf("%d", p+i);        /* 用指针法访问数组元素 */	
}

void OutputArray(int *p, int n)  /* 形参声明为指针变量,输出数组元素值 */
{
	int i;
	for (i=0; i<n; i++)
		printf("%4d", *(p+i));   /* 用指针法访问数组元素 */
	printf("\n");	
}
元の記事を23件公開 賞賛された7件 1990年の訪問

おすすめ

転載: blog.csdn.net/weixin_44641176/article/details/100049448