quando usar alocação dinamica de memória em C ?

Iniciado por solanoalves, 16 de Outubro de 2006, 11:10

tópico anterior - próximo tópico

solanoalves

Pessoal eu já conheço os comandos calloc malloc e free, porém eu não sei quando usá-los.
Qual a diferença em usar e não usa-los num programa qualquer??
obrigado

e se puderem de quebra me explicar o porque do argc e argv[] do main(int argc, char** argv[]) eu agradeço muito ...

;)

solanoalves

Já saquei no google quando usar o malloc e alocação dinamica.

Só não sei pra que serve o ARGC e ARGV da função main (int argc, char**argv[]) se alguem se dispuzser a ajuda agradeço valeu

Dimas

E ai solanoalvesblz?

O argc e o argv servem para receber parâmetros pela linha de comando.

O argc é um int, que representa o número de argumentos fornecidos na linha de comando, contando o próprio nome do programa.

O argv é um vetor de Strings (na forma de ponteiro para ponteiro para char), onde cada posição aponta para um dos argumentos passados. argv[0] é sempre o nome do programa, argv[1] o segundo argumento fornecido e assim por diante.

Qualquer coisa pergunte...

Valeu!
Dimas Gabriel
digabriel[at]gmail.com

"Liberdade é a questão, a única e exclusiva questão."

Darcamo

Vc pode usar diretamente o argc e o argv para capturar os argumentos fornecidos na linha de comando, mas uma maneira mais prática e mais uniforme com o padrão utilizado no linux consiste em utilizar a biblioteca getopt para isso (ou a getopt_long). Dá uma olhada em
http://www.gnu.org/software/libc/manual/html_node/Getopt.html#Getopt
se tiver interesse.

solanoalves

tem como voce dar um exempRimo só pra eu captar.

tipo

...

printf("ol%c",'á');
...

esse argumento 'á' é o argv[1] ?

solanoalves

pessoal pega mais leve na explicação eu sou leigo ainda.
nunca vi um tutorial explicando o argc e argv ..expliquem bem mastigadinho por favooor..rsrs desculpem  :-[ mas é necessario para usra o GTK

solanoalves

qual a DIFERENÇA em usar o main(int argc, char**argv[]) e usar o main() sem nada dentro ???

valeu a força!!!

Dimas

Cara, esse negócio de "explicar mastigadinho" nunca foi meu forte (tanto pta ensinar quanto pra aprender). Acho que esse não é a melhor maneira de aprender. Mas eu posso te dar alguma dicas sim. hehe

Aqui vai mais uma: essa apostila explica bem o funcionamento o argc e argv. Tem exemplos tbm: http://apostilando.com/download.php?cod=2208&categoria=C%20e%20C++

A difereça entre declara a função main com o argc argv e sem eles é que você só declara com ele quando o programa recebe alguma coisa pela linha de comando. Se o seu programa não recebe nada, não tem pq declarar eles.

Qualquer coisa pergunta!

Valeu!
Dimas Gabriel
digabriel[at]gmail.com

"Liberdade é a questão, a única e exclusiva questão."

solanoalves

o que seria esse "receber alguma coisa pela linha de comando" ??


Dimas

#9
Quando você digita no terminal:
tar --help

esse --help é um parâmetro que você passa para o progarama tar. Ele é referenciado no argv[n] que está definido no programa.
Dimas Gabriel
digabriel[at]gmail.com

"Liberdade é a questão, a única e exclusiva questão."

solanoalves


solanoalves

Citar
#include <stdio.h>
#include <stdlib.h>

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

printf("Parametro digitado : %s",argv[1]);
system("PAUSE");

  return 0;
}

Bom agora entendi o tal do argv porém falta compreender o argc, se alguem tiver a paciencia para me explicar eu agradeço demaiiiiss...valeu galera

cefb

o argc é o numero de parametros passados. se tiver o programa teste e chamar teste um dois o argc vai ser 3, o argv[0]=teste, argv[1]=um e argv[2]=dois




solanoalves