Autor Tópico: quando usar alocação dinamica de memória em C ?  (Lida 7622 vezes)

Offline solanoalves

  • Usuário Ubuntu
  • *
  • Mensagens: 398
  • Arch Linux
    • Ver perfil
quando usar alocação dinamica de memória em C ?
« Online: 16 de Outubro de 2006, 11:10 »
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 ...

 ;)

Offline solanoalves

  • Usuário Ubuntu
  • *
  • Mensagens: 398
  • Arch Linux
    • Ver perfil
Re: quando usar alocação dinamica de memória em C ?
« Resposta #1 Online: 16 de Outubro de 2006, 22:59 »
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

Offline Dimas

  • Usuário Ubuntu
  • *
  • Mensagens: 81
    • Ver perfil
Re: quando usar alocação dinamica de memória em C ?
« Resposta #2 Online: 17 de Outubro de 2006, 00:44 »
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

  • Visitante
Re: quando usar alocação dinamica de memória em C ?
« Resposta #3 Online: 17 de Outubro de 2006, 01:37 »
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.

Offline solanoalves

  • Usuário Ubuntu
  • *
  • Mensagens: 398
  • Arch Linux
    • Ver perfil
Re: quando usar alocação dinamica de memória em C ?
« Resposta #4 Online: 17 de Outubro de 2006, 01:38 »
tem como voce dar um exempRimo só pra eu captar.

tipo

...

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

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

Offline solanoalves

  • Usuário Ubuntu
  • *
  • Mensagens: 398
  • Arch Linux
    • Ver perfil
Re: quando usar alocação dinamica de memória em C ?
« Resposta #5 Online: 17 de Outubro de 2006, 01:39 »
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

Offline solanoalves

  • Usuário Ubuntu
  • *
  • Mensagens: 398
  • Arch Linux
    • Ver perfil
Re: quando usar alocação dinamica de memória em C ?
« Resposta #6 Online: 17 de Outubro de 2006, 01:45 »
qual a DIFERENÇA em usar o main(int argc, char**argv[]) e usar o main() sem nada dentro ???

valeu a força!!!

Offline Dimas

  • Usuário Ubuntu
  • *
  • Mensagens: 81
    • Ver perfil
Re: quando usar alocação dinamica de memória em C ?
« Resposta #7 Online: 17 de Outubro de 2006, 11:35 »
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."

Offline solanoalves

  • Usuário Ubuntu
  • *
  • Mensagens: 398
  • Arch Linux
    • Ver perfil
Re: quando usar alocação dinamica de memória em C ?
« Resposta #8 Online: 17 de Outubro de 2006, 13:34 »
o que seria esse "receber alguma coisa pela linha de comando" ??


Offline Dimas

  • Usuário Ubuntu
  • *
  • Mensagens: 81
    • Ver perfil
Re: quando usar alocação dinamica de memória em C ?
« Resposta #9 Online: 17 de Outubro de 2006, 13:57 »
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.
« Última modificação: 17 de Outubro de 2006, 14:05 por Dimas »
Dimas Gabriel
digabriel[at]gmail.com

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

Offline solanoalves

  • Usuário Ubuntu
  • *
  • Mensagens: 398
  • Arch Linux
    • Ver perfil
Re: quando usar alocação dinamica de memória em C ?
« Resposta #10 Online: 17 de Outubro de 2006, 23:45 »
saquei valeu

Offline solanoalves

  • Usuário Ubuntu
  • *
  • Mensagens: 398
  • Arch Linux
    • Ver perfil
Re: quando usar alocação dinamica de memória em C ?
« Resposta #11 Online: 18 de Outubro de 2006, 01:18 »
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

Offline cefb

  • Usuário Ubuntu
  • *
  • Mensagens: 5
    • Ver perfil
Re: quando usar alocação dinamica de memória em C ?
« Resposta #12 Online: 18 de Outubro de 2006, 08:39 »
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




Offline solanoalves

  • Usuário Ubuntu
  • *
  • Mensagens: 398
  • Arch Linux
    • Ver perfil
Re: quando usar alocação dinamica de memória em C ?
« Resposta #13 Online: 18 de Outubro de 2006, 13:57 »
saquei valeu