Matriz unidimensional y puntero

Introducción: para una matriz unidimensional, los parámetros de la matriz variables variables de puntero como parámetros, puede usar el método de subíndice y el método de puntero para referirse a los elementos de la matriz.


1. Parámetro de matriz

Método de subíndice (fácil de entender)

Dirección: & a [i]

Elemento: a [i]

Método de puntero (recomendado)

Ruinas de la tierra: a + i

Elemento: * (a + i)

? Debido a que el compilador interpreta un [i] como * (a + i), lleva tiempo, por lo que escribir directamente un [i] como * (a + i) puede mejorar la eficiencia de ejecución


2. Las variables de puntero como parámetros formales

Método de subíndice

Dirección: & p [i]

Elemento: p [i]

? Puntero

Dirección: p + i

Elemento: * (p + i)


Dos contrastes

  • p + 1? p ++
  1. Ninguno es simple +1, 1 se refiere a 1 unidad de memoria
  2. p ++ ↔p = p + 1, el valor de p cambia
  3. p + 1 no cambia el valor de p
  • a? p
  1. a es una dirección constante
  2. p es una variable de dirección

Resumen: para una matriz unidimensional,

En la función principal, use el nombre de la matriz como argumento,

En la función llamada, la matriz se usa como un parámetro formal, y el elemento de referencia se usa

Método de subíndice → fácil de entender

Método de puntero → Mejora la eficiencia

No es necesario usar variables de puntero


Ejemplos

Parámetro de matriz

1.1 Método de subíndice

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 método de puntero

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");	
}

Variables de puntero como parámetros formales

1.3 Método de subíndice

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 método de puntero

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");	
}
Publicado 23 artículos originales · elogiado 7 · visitas 1990

Supongo que te gusta

Origin blog.csdn.net/weixin_44641176/article/details/100049448
Recomendado
Clasificación