estoy aprendiendo c++ y los punteros son algo confusos para mi y no llego a entenderlos del todo bien:
porque en ciertas ocasiones se pone un * para guardar una variable y en otras no?
//estructura con punteros
#include <iostream>
using namespace std;
void pedirdatos();
void elmayor();
struct empleados{
char nombre[40];
int edad;
float salario;
}empleado[3],*punteroemp=empleado;
int main()
{
pedirdatos();
elmayor();
return 0;
}
//funcion pedir datos del empleado
void pedirdatos(){
cout<<"ingresa los datos del empleados\n";
for(int i=0;i<3;i++){
cout<<"nombre "<<i+1<<": ";cin>>(punteroemp+i)->nombre;
cout<<"salario "<<i+1<<": ";cin>>(punteroemp+i)->salario;
cout<<"edad "<<i+1<<": ";cin>>(punteroemp+i)->edad;
}
}
//funcion para buscar al empleado de mayor edad
void elmayor(){
int mayor=0,pos=0;
for(int i=0;i<3;i++){
if((punteroemp+i)->edad>mayor){
mayor=(punteroemp+i)->edad;
pos=i;
}
}
cout<<"el empleado mayor es:\n";
cout<<"nombre: "<<(punteroemp+pos)->nombre<<endl;
cout<<"salario: "<<(punteroemp+pos)->salario<<endl;
cout<<"edad: "<<(punteroemp+pos)->edad<<endl;
}
Por ejemplo en este codigo cuando hago el "cin>>" no es necesario poner el "*"
Pero en este otro codigo si tengo que poner los astericos porque de lo contrario el programa me lanza error
//matriz con punteros
#include <iostream>
#include <stdlib.h>
using namespace std;
int **matriz,filas,columnas;
void pedirdatos();
void mostrardatos();
int main()
{
pedirdatos();
mostrardatos();
for(int i=0;i<filas;i++){
delete[] matriz[i];
}
delete[] matriz;
return 0;
}
//llenardatos de la matriz
void pedirdatos(){
cout<<"cuantas filas va a tener tu matriz: ";
cin>>filas;
cout<<"cuantas columnas va a tener tu matriz: ";
cin>>columnas;
matriz=new int*[filas];
for(int i=0;i<filas;i++){
matriz[i]=new int[columnas];
}
for(int i=0;i<filas;i++){
for(int j=0;j<columnas;j++){
cout<<"matriz["<<i+1<<"]"<<"["<<j+1<<"]: ";
cin>>*(*(matriz+i)+j);
}
}
}
//mostrar datos de la matriz
void mostrardatos(){
cout<<"MATRIZ\n";
for(int i=0;i<filas;i++){
for(int j=0;j<columnas;j++){
cout<<*(*(matriz+i)+j)<<" ";
}
cout<<"\n";
}
}
En resumen me gustaria saber para que sirve el operador *
Que diferencia hay entre puntero y *puntero?