[C++ Notas de estudio 1] Transferencia de parámetros de la función principal

Cuando se ejecutan otros proyectos de código abierto, a menudo parece que hay parámetros después de la operación. ¿Cómo se logra esto? ¿Cómo introducirlo en nuestros propios proyectos?

Formas de uso común:

int main(int argc, char* argv[]){
    
     }
int main(int argc, char** argv){
    
     }
int main(int argc, char** argv, char** envp){
    
     }

char** argvRepresenta un puntero a un puntero de carácter, que también puede verse como una matriz de punteros a cadenas. En C/C++, los argumentos de la línea de comandos se pasan al programa como cadenas, por lo que char** argvse utilizan para almacenar argumentos de la línea de comandos.

Aquí hay un programa de muestra que demuestra cómo usar char** argvpara obtener argumentos de línea de comando y generarlos:

#include <iostream>

int main(int argc, char** argv) {
    
    
    std::cout << "argc = " << argc << std::endl;
    for(int i = 0; i < argc; i++) {
    
    
        std::cout << "argv[" << i << "] = " << argv[i] << std::endl;
    }
    return 0;
}

Ejecute el programa y pase algunos parámetros, por ejemplo:

./example hello world 123

La salida es la siguiente:

argc = 4
argv[0] = ./example
argv[1] = hello
argv[2] = world
argv[3] = 123

Como puede ver, char** argvapunta a una matriz de punteros de cadena, cada elemento apunta a una cadena y estas cadenas son parámetros de línea de comando. El programa genera el valor de cada parámetro a su vez recorriendo argvla matriz.

int main(int argc, char* argv[], char* envp[])Es la función principal del programa C/C++, contiene tres parámetros:

  1. int argc: Indica el número de parámetros de la línea de comandos, incluido el propio programa. Por ejemplo, ./example arg1 arg2cuando se ejecuta el comando, argcel valor de 3.

  2. char* argv[]: es un puntero a puntero de carácter para almacenar argumentos de línea de comandos. argv[0]Almacena el nombre del programa, argv[1]almacena el primer argumento de la línea de comandos, etc. Por ejemplo, ./example arg1 arg2cuando se ejecuta el comando, argv[0]el valor de es "./example", el valor de , es .argv[1]"arg1"argv[2]"arg2"

  3. char* envp[]: es un puntero a puntero de carácter para almacenar variables de entorno. Cada variable de entorno es una cadena con el formato name=value. Por ejemplo, envp[0]lo que se almacena es "USER=john", envp[1]lo que se almacena es "HOME=/home/john".

Aquí hay un programa de ejemplo simple que demuestra cómo usar estos tres parámetros:

#include <iostream>

int main(int argc, char* argv[], char* envp[]) {
    
    
    std::cout << "argc = " << argc << std::endl;
    for(int i = 0; i < argc; i++) {
    
    
        std::cout << "argv[" << i << "] = " << argv[i] << std::endl;
    }
    for(int i = 0; envp[i] != nullptr; i++) {
    
    
        std::cout << "envp[" << i << "] = " << envp[i] << std::endl;
    }
    return 0;
}

El programa puede generar los valores de los argumentos de la línea de comandos y las variables de entorno.

Supongo que te gusta

Origin blog.csdn.net/kanhao100/article/details/130540200
Recomendado
Clasificación