alguém pode me explicar esse *argv[]?
ponteiro pra matriz?
não consigo entender...
alguém pode me explicar esse *argv[]?
ponteiro pra matriz?
não consigo entender…
alguém pode me explicar esse *argv[]?
ponteiro pra matriz?
não consigo entender...
alguém pode me explicar esse *argv[]?
ponteiro pra matriz?
não consigo entender…
Uma das formas de declararmos uma string em c é como um ponteiro de caracteres:
Então o código char *argv[] nada mais é do que um array de strings.
int main(int argc, char *argv[])
Nesse trecho, voce esta definindo que seu método main pode receber por parametros os argumentos declarados dentro dele.
quando voce declara char *argv[], esta definido um ponteiro de vetor do tipo char, é ai que ele conta em bytes o que vai armazenar na memória para seu vetor, sempre iniciando na posição zero(0).
Espero ter ajudado, não sou muito bom explicando. Flw.
Na verdade não é um ponteiro de vetor, e sim, um vetor de ponteiros
Só para comentar. Esses parâmetros servem para você usar a linha de comando.
Se alguém rodar sua aplicação assim:
suaAplicacao Vinicius 1 2 3
O parâmetro argc vai receber o valor 4, indicando que 4 parâmetros foram passados pela linha de comando.
O vetor argv vai ser preenchido com:
argv[0]: C:\SeuDiretorio\suaAplicacao.exe --> Aqui sempre vai o caminho da sua aplicação
argv[1]: Vinicius
argv[2]: 1
argv[3]: 2
argv[4]: 3
Todos esses parâmetros do tipo char*. Por isso argv é um array de char*
Na verdade não é um ponteiro de vetor, e sim, um vetor de ponteiros [/quote]
Isso porque em C vale a regra "dados dois operadores, um que vem à esquerda (pré-fixo) e outro que vem à direita (pós-fixo), o que tem maior precedência é o da direita.
Então char argv[] é um array ([]) de ponteiros () para char.
argv[0]: 0xblablabla --> essa região de memória contém --> C:\SeuDiretorio\suaAplicacao.exe --> Aqui sempre vai o caminho da sua aplicação
argv[1]: 0xblebleble --> essa região de memória contém --> Vinicius
argv[2]: 0xbliblibli --> essa região de memória contém --> 1
argv[3]: 0xblobloblo --> essa região de memória contém --> 2
argv[4]: 0xblublublu --> essa região de memória contém --> 3
Certo?
Certo. Porém, o C usa char* na forma de strings de maneira mais ou menos transparente, por isso não entrei no detalhe de realmente ser o ponteiro para o primeiro char de uma sequencia terminada por \0.