Categorías
C/C++

Estrella doble después del tipo y antes de la variable

¿Qué significa ** en el siguiente código?

char **argv;

Declara argv como un puntero que apunta a un puntero char. Es equivalente al siguiente código.

char *argv[];

He aquí un buen ejemplo.

#include <unistd.h>
#include <iostream>
 
using namespace std;
int test(int argc, char **argv) {
 
        // Start at 1 to skip the program name                                                                                                                                                                                              
        for (int i = 1; i < argc; ++i) {
                for (int j = 0; argv[i][j] != ''; ++j) {                                                                                                                                                                                 
                        cout << *(argv + i) << 'n'; // this and next line are the same                                                                                                                                                                
                        cout << argv[i] << 'n';
                        cout << *(*(argv + i) + j) << 'n';
                }
        }
 
}
 
int main(int argc, char **argv){
 
        //how to pass pointers                                                                                                                                                                                                              
        cout << argc << "parameters"<<endl;
        test(argc, argv);
 
}

Una pregunta interesante es cómo inicializar «str» ​​declarado en «char ** str».
Un diagrama vale mil palabras.

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *