Otaru C++ Varios capítulos ⑧ (Dos) punteros y matrices

Tabla de contenido

1. En algunos casos, los nombres de variables de matriz en C++ pueden considerarse punteros.

2. Declaración de entrada scanf en lenguaje C, declaración de salida printf

3. Utilice punteros como matrices dinámicas.


Otaru C ++ múltiples capítulos ⑧ (1) Variables de puntero icono-default.png?t=N176https://blog.csdn.net/weixin_44775255/article/details/129031168

Otaru C++ múltiples capítulos ⑧ (3) Punteros y cadenas, (4) Funciones y punterosicono-default.png?t=N176 https://blog.csdn.net/weixin_44775255/article/details/129397866

1. En algunos casos, los nombres de variables de matriz en C++ pueden considerarse punteros.

#include<iostream>
using namespace std;
//	1.用数组名访问数组
int a[]={10,11,12,13,14,15};
int *p=a+1;
int main(){
	cout<<*a<<endl; //默认输出第一个 
	cout<<*(a+2)<<endl;
	cout<<*(++p)<<endl; 	
    return 0;
}

  1. *a representa, inicialmente apuntando a la posición a[0], que es 10.
  2. *(a+2) a+2 significa que la dirección de la matriz a retrocede 2 dígitos, que es la dirección de a[2], y el puntero apunta a 12.
  3.  *p = a+1, entonces p apunta a la dirección de a[1], ++p apunta a la dirección de a[2], *(++p) es el valor 12 de a[2].
  • Se puede encontrar que la variable de matriz a se puede usar como puntero, ¡apuntando al primer elemento de la matriz de forma predeterminada!
  • Los punteros son estructuras de datos dinámicas y las matrices son estructuras de datos estáticas. Los punteros se utilizan en declaraciones de entrada en lenguaje C. A continuación, aprendamos sobre el scanf de entrada y el printf de salida del lenguaje C.


2. Declaración de entrada scanf en lenguaje C, declaración de salida printf

Antes de utilizar la entrada y salida del lenguaje C, debe importar la biblioteca: include<cstdio>  // IO estándar del lenguaje C

Formato de salida : printf ("cadena de control de formato"  ,  lista de salida)

#include<iostream>
#include<cstdio>
using namespace std;
int main(){
	// 输出用法例子 
	printf("整数:%d,长整数:%ld\n",100*1234,1+3*10000000);	
	printf("单精度:%f,双精度:%lf\n",1.5*1234,1+3*1.55);	
	printf("保留2位:%.2f, 9个占位并保留3位:%9.3f\n",3.14*1422,3.14159*3);	
	printf("字符:%c, 字符串:%s",'A',"abccd"); 
	
//	 输入用法例子
	int a;
	double b;
	float c;
	scanf("%d%lf%f",&a,&b,&c);
	printf("a=%d  b=%lf  c=%f",a,b,c); 
	return 0;
	
}

 

scanf usa el nombre de la matriz

//2.scanf使用数组名
#include<iostream>
#include<cstdio>
using namespace std;
int a[5];
int main(){
	for(int i=0;i<5;i++){
		scanf("%d",a+i); //a+i就是地址,a+0,a+1,a+4等地址 
	}
	for(int i=0;i<5;i++){
//		cout<<*(a+i)<<" ";
		printf("a[%d]=%d\n",i,a[i]);  //a[i]就是 *(a+i)
	} 
	return 0;
}


3. Utilice punteros como matrices dinámicas.

¿Qué es una matriz dinámica? La longitud del espacio de la matriz se puede cambiar, no fijar.

El uso de punteros como matrices puede lograr cambios dinámicos.

Por ejemplo: encuentre la suma de los elementos de una matriz.

//3.指针也可以看成数组名
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int *a; //指针变量a当数组名使用 
int main(){
	scanf("%d",&n);
	//指针变成数组怎么写? 
	a = new int[n+1]; // 申请连续的n+1片的空间给指针a
	for(int i=0;i<5;i++){ // 输入值到数组
		scanf("%d",&a[i]);
	}
	for(int i=1;i<5;i++){ // 求和运算
		a[i] = a[i] + a[i-1];
	}
	for(int i=0;i<5;i++){ // 输出结果
		printf("%d ",a[i]);
	}
	return 0;
} 

Supongo que te gusta

Origin blog.csdn.net/weixin_44775255/article/details/129396791
Recomendado
Clasificación