Resumen de operación de puntero de lenguaje C ocho

inserte la descripción de la imagen aquí

La mayor razón para aprender es deshacerse de la mediocridad, un día antes, habrá más esplendor en la vida, un día después, un día más mediocridad. 


Al final del artículo, un resumen detallado de los ocho principales 


diario de estudio

Tabla de contenido

diario de estudio

PrólogoEditar

1. El significado del puntero 

2. Los datos de tipo de dirección en realidad contienen 3 piezas de información 

3. Comparación inductiva de variables de puntero

4. Aritmética de punteros 

Agregar (restar) un número entero a una variable de puntero

asignación de variable de puntero

Se pueden restar dos variables de puntero

Comparación de dos variables de puntero

valor vacío

Cinco, las ventajas del puntero.

Manipulación de punteros en lenguaje C


prefacio

El puntero se divide aquí en ocho partes pequeñas, que son "variable de puntero", " matriz         referenciada por puntero ", "*referida a matriz multidimensional por puntero", "cadena referenciada por puntero", "*puntero a función", "* Funciones que devuelven valores de puntero", "* Arreglos de punteros y múltiples punteros", "* Asignación de memoria dinámica y variables de puntero a ella".   

1. El significado del puntero 

        "Puntero" es un término figurativo en lenguaje C, que expresa vívidamente la relación de "apuntar a", y su realización física se logra a través de direcciones.

&a es la dirección de la variable a, también conocida como puntero de la variable a.

Una variable puntero es una variable que almacena una dirección.También se puede decir que una variable puntero es una variable que almacena un puntero.

El valor de una variable puntero es una dirección, también se puede decir que el valor de una variable puntero es un puntero.

Una variable de puntero también se puede denominar variable de dirección y su valor es una dirección.

& es el operador de dirección, &a es la dirección de a, también se puede decir que & es el operador puntero.

&a es un puntero a la variable a (es decir, un puntero a la variable a).

El nombre de la matriz es una dirección, que es la dirección del primer elemento de la matriz. También se puede decir que el nombre de la matriz es un puntero, que es el puntero del primer elemento de la matriz.

El nombre de la función es un puntero (que apunta al primer byte del área del código de la función), y también se puede decir que el nombre de la función es una dirección (la dirección del primer byte del área del código de la función).

Si el parámetro real de la función es un nombre de matriz, lo que se pasa al parámetro formal es una dirección. También se puede decir que lo que se pasa al parámetro formal es un puntero.

2. Los datos de tipo de dirección en realidad contienen 3 piezas de información 

① Indica la dirección pura del número de memoria.

② Su propio tipo, es decir, el tipo de puntero.

③ Qué tipo de datos se almacenan en la unidad de almacenamiento identificada por él, es decir, el tipo base.

int a;
/* &a为a的地址,它就包括以上3个信息,它代表的是一个整型数据的地址,int是&a的基类型(即它指向的是int型的存储单元)。&a就是“指向整型数据的指针类型”或“基类型为整型的指针类型”,其类型可以表示为“int *”型。*/

Distinguir entre punteros y variables de puntero. Un puntero es una dirección y una variable de puntero es una variable utilizada para almacenar una dirección.

Para las variables de puntero, se dice que la dirección de cuya dirección está almacenada en la variable de puntero está apuntada por la variable de puntero.

int a,*p;		//p是int*型的指针变量,基类型是int型 
float b;
p=&a;		//a是int型,合法 
p=&b;		//b是float型,类型不匹配

Un puntero void * es un puntero especial que no apunta a ningún tipo de datos. Si necesita usar esta dirección para apuntar a cierto tipo de datos, primero debe realizar una conversión de tipo en la dirección.

3. Comparación inductiva de variables de puntero

Definiciones de variables

representación de tipos

significado

ent yo;

En t

definir una variable entera i

int *p;

En t *

Defina p como una variable de puntero que apunta a datos enteros

int a[5];

entero [5]

Defina una matriz entera a con 5 elementos

entero *p[4];

entero *[4]

Defina la matriz de punteros p, que consta de 4 elementos de puntero que apuntan a datos enteros

int(*p)[4];

entero (*)[4]

p es una variable de puntero que apunta a una matriz unidimensional que contiene 4 elementos

intf();

En t ()

f es una función que devuelve un valor de función entero

int *p();

En t *()

p es una función que devuelve un puntero a datos enteros

int(*p)();

En t (*)()

p es un puntero a una función que devuelve un valor entero

int **p;

En t **

p es una variable de puntero que apunta a una variable de puntero que apunta a datos enteros

vacío *p;

vacío *

p es una variable de puntero, el tipo base es nulo (tipo vacío), no apunta a un objeto específico

4. Aritmética de punteros 

Agregar (restar) un número entero a una variable de puntero

p++;		//将该指针变量的原值(是一个地址)和它指向的变量所占用的存储单元的字节数相加

asignación de variable de puntero

Asigne una dirección de variable a una variable de puntero. No se debe asignar un número entero a una variable de puntero.

p=&a; 		//将变量a的地址赋给p
p=array; 	//将数组array首元素地址赋给p
p=&array[i];	//将数组array第i个元素的地址赋给p
p=max;		//max为已定义的函数,将max的入口地址赋给p
p1=p2;		//p1和p2是基类型相同指针变量,将p2的值赋给p1

Se pueden restar dos variables de puntero

Si ambas variables de puntero apuntan a elementos en la misma matriz, la diferencia entre los valores de las dos variables de puntero es el número de elementos entre los dos punteros.

Comparación de dos variables de puntero

Si dos punteros apuntan a elementos de la misma matriz, se pueden comparar. Una variable de puntero que apunta al elemento anterior es "menor que" una variable de puntero que apunta al siguiente elemento. La comparación no tiene sentido si p1 y p2 no apuntan a la misma matriz.

valor vacío

        Una variable puntero puede tener un valor nulo, es decir, la variable puntero no apunta a ninguna variable. NULL es una constante simbólica que representa el número entero 0. NULL se define en el archivo de encabezado stdio.h: #define NULL 0 Hace que p apunte a la unidad cuya dirección es 0. El sistema garantiza que la unidad no se utiliza para otros fines (no se almacenan datos válidos).

        El valor de p es NULL y p no se le asigna un valor son dos conceptos diferentes. El primero tiene un valor (el valor es 0) y no apunta a ninguna variable, aunque el segundo no le ha asignado un valor a p, no significa que p no tenga valor, sino que su valor es un valor impredecible, es decir , p puede apuntar a una variable desconocida unidad especificada.

Cinco, las ventajas del puntero.

Mejorar la eficiencia del programa;

Cuando el valor de la variable a la que apunta el puntero cambia cuando se llama a la función, estos valores pueden ser utilizados por la función que llama, es decir, se pueden obtener múltiples valores modificables de la llamada a la función;

Se puede implementar la asignación de memoria dinámica.

Si el puntero se usa incorrectamente, habrá fallas ocultas, difíciles de encontrar y solucionar. Por lo tanto, use los punteros con mucho cuidado.

Manipulación de punteros en lenguaje C

Operación de puntero de lenguaje C (1) variable de puntero

Operación de puntero en lenguaje C (2) que hace referencia a matrices a través de punteros

Operación de puntero en lenguaje C (3) *Referido a arreglos multidimensionales a través de punteros 

Operación de puntero de lenguaje C (cuatro) cadenas de referencia a través de punteros

Operación de puntero en lenguaje C (5) * puntero a función

Operación de puntero en lenguaje C (6) * función que devuelve un valor de puntero

Operación de puntero en lenguaje C (7) * matriz de punteros y múltiples punteros 

Operación de puntero en lenguaje C (8) * asignación de memoria dinámica y variables de puntero que apuntan a ella

Supongo que te gusta

Origin blog.csdn.net/m0_63794226/article/details/126617644
Recomendado
Clasificación