Comprensión simple de los punteros
La posición del puntero en c es muy importante y el puntero debe aprenderse bien. De simple a difícil.
1. Definición simple de punteros.
En segundo lugar, el tipo de puntero.
3. Puntero salvaje.
4. Operación del puntero.
5. Comprensión de punteros y matrices.
En sexto lugar, el puntero de segundo nivel.
Siete, matriz de punteros.
1. Definición simple de puntero
Pointer es una herramienta que utiliza la dirección para realizar cálculos, apunta directamente a la dirección y encuentra la unidad de memoria de la dirección a través de ella.
El puntero es una variable que almacena la dirección de la unidad de memoria.
Primero se debe definir el puntero, se debe usar el puntero y se debe asignar un espacio para el puntero La dirección de la variable apuntada por el puntero se coloca en el espacio del puntero.
int a=5;//在内存中开辟一块空间
int* p=&a;//申请一个int指针,用&取a的地址赋值给指针。
//随后p代表a的地址,*p代表a的值,既*p=2;
En segundo lugar, el tipo de puntero
// Si desea almacenar la dirección, el tamaño de este puntero debe tener suficiente espacio para almacenar otras direcciones.
// Para un sistema de 32 bits, la dirección máxima requiere 4 bytes y un sistema de 64 bits requiere 8 .. .
// Entonces, el tamaño del puntero Ambos son 4 bytes.
// El tipo de variable debe explicarse. Lo mismo ocurre con los punteros. El tipo de puntero determina que el puntero apunta al mismo tipo.
// Pero a través de la conversión forzada, puede apuntar a diferentes tipos, lo que significa que otros los tipos de valores se convierten en tipos de puntero.
int *p=NULL;//既存放int类型变量的地址。
char *p=NULL;
short *p=NULL;
long *p=NULL;
float *p=NULL;
double *p=NULL;
void *p=NULL;//无类型指针,可以将其它类型的地址值赋给它,但它不能随便赋值给其他类型。
//强转如下:
int n=10;
char *p=(char *)&n;//将int类型的变量地址强转为char类型。
//指针类型决定了,指针向前向后的移动距离。
Tres, puntero salvaje
No se conocen ni el puntero salvaje ni la posición señalada por el puntero.
Motivo: el puntero no se inicializa, el acceso del puntero está fuera de los límites y el espacio al que apunta el puntero se libera.
Cuatro, aritmética de puntero
int a=10;
int *p=&a;
p++;//既对a地址向后加1;
*p+1; //既对a的值+1;
*p=5;//既将a的值改为5;
允许指向数组的指针在数组中比较位置大小。不可以与其它数组比较。
5. Comprensión de punteros y matrices.
int arr[]={
1,2,3,4,5};//arr为首元素,代表整个数组。
int *p=arr;//**p存放的事首元素的地址。**
p[0]=1;
*p[0];//表示首元素地址
Seis, puntero secundario
Las variables de puntero también son variables, tanto la dirección del puntero, el puntero p almacena el puntero a la dirección, como la dirección del puntero p se almacena en ppa, que es el puntero al puntero. ppa es un puntero secundario.
Siete, matriz de punteros **
** es una matriz, con las siguientes palabras como resultado final.
Matriz de punteros:
Primero es una matriz, y esta matriz almacena punteros. **
Puntero de matriz:
En primer lugar, es un puntero que apunta a una matriz.