Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

agness

usar ponteiros diminui o tempo de execução?

Recommended Posts

Ouvi falar que usar ponteiros gasta menos memória e por isso diminui o tempo de execução de um código. Mas não consegui achar nada na internet que prove ou desminta isso. Nem em pequenos programas meu pc executa mais (nem menos) devagar.

 

É verdade que usar ponteiros gasta menos memória e faz o programa executar mais rápido?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não existe mágica, então a resposta é que depende do caso de uso. Um exemplo simples em que isso seria verdade é se você tivesse uma estrutura de dados muito grande. O que vc acha que é mais rápido: duplicar toda a informação (ou seja, ter duas cópias de tudo) ou manipular um ponteiro para ela?

 

Em alguns cenários o inverso ocorre: o uso de ponteiro requer, necessariamente, uma operação a mais para avaliar uma expressão.

 

Claro, isso tudo desconsidera otimização que a implementação possa fazer. Lembre-se de que os compiladores/interpretadores só precisam se comportar conforme a definição da linguagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por joaquim_bezzera
      Estou fazendo um trabalho para a faculdade criando uma estrutura de cadastro de uma corrida. Já consegui fazer grande parte mas não consigo resolver esses pontos. Alguém saberia resolver?

    • Por luannsr12
      Olá pessoal, parece que o meu Photoshop atualizou aqui, pois apareceu algumas ferramentas que eu não tinha visto, e também sumiu o ponteiro do seletor , alguém pode me ajudar
    • Por jadsonlucena
      #include <iostream> #include <cstdlib> using namespace std; struct Page { int a; Page* b; }; int main(int argc, char *argv[]) { int size = 5; Page* p = (Page*) malloc(sizeof(Page)); p->a = 5; p->b = (Page*) malloc(sizeof(Page) * size); for (int i = 0; i < size; i++) { p->b[i] = NULL; } cout << p->b[3] << endl; return 0; } A ideia era criar uma página onde dentro teríamos um array de páginas inicialmente nulas. Mas por algum motivo eu não estou conseguindo criar o array interno. Pois quando tento instanciar o valor nulo para as células do array, o compilador informa que não é um array e não pode acessar.
       
      Antes de qualquer coisa, realmente necessito que seja uma alocação dinâmica.
       
      Grato desde já pela ajuda... 
    • Por diegottt
      Galera bom dia , estou com uma duvida como acesso a chave dentro dessa estrutura, ao meu ver seria assim ex: (*raiz)->reg.chave = 3  , mais nao estou conseguindo acessar a variavel chave. 
       
      typedef int tipoChave;
       
      typedef struct tipoRegistro{
          tipoChave chave;
          //outros itens...
      }tipoRegistro;
       
      typedef struct tipoNo* tipoApontador;
       
      typedef struct tipoNo{
          tipoRegistro reg;
          tipoApontador esq,dir;
      }tipoNo;
       
    • Por jesseufrrj
      Boa noite galera,  
      Iniciante no C e se alguém puder me dar uma ajuda.  
       
      O programa pega os dados de pacientes, usa uma função para achar o "fator" e usa esse fator multiplicado pela idade para gerar o CA(condicionamento aeróbico). Devo usar estruturas, alocação dinâmica e ponteiro. Não consigo entender o erro.  
       
        #include <stdio.h> #include <stdlib.h> typedef struct { char nome[30]; int idade; float nbcr; float nbca; } TPaciente; void lerDados(TPaciente *P, int n); int resistencia (TPaciente *P, int n); // Nessa linha aparece a seguinte mensagem de erro -> [Warning] passing argument 1 of 'resistencia' from incompatible pointer type int main(){ TPaciente *g; // declarando um ponteiro do tipo TPaciente; int n; printf("Qual o numero de pacientes voce vai calcular a resistencia aerobica? \n"); scanf("%d", &n); g = ((TPaciente*) malloc(n*sizeof(TPaciente))); lerDados(g,n); resistencia(g,n); int i; float CA; int fator; for(i=0; i<n; i++){ fator = resistencia(g); //fator recebe o resultado da chamada de função resistencia CA = fator * g->idade; printf("\nO Condicionamento Aerobico do doente %s e %.0f", g->nome, CA); } free(g); } void lerDados(TPaciente *g, int n) { int i; for(i=0;i<n;i++){ printf("\n Qual o nome do paciente: "); scanf("%s", &(g+i)->nome); printf("\n Qual a idade do paciente: "); scanf("%d", &(g+i)->idade); printf("\n Qual o nbcr do paciente: "); scanf("%f", &(g+i)->nbcr); printf("\n Qual o nbca do paciente: "); scanf("%f", &(g+i)->nbca); } } int resistencia(TPaciente *g, int n){ int i, fator; float media; for(i=0; i<n ; i++){ media = ((g+i)->nbcr*3 + (g+i)->nbca*5)/10; if(media <= 70){ printf("FATOR = 3"); fator = 3; } if((media > 70) && (media < 100)){ printf("FATOR = 2"); fator = 2; } if(media > 100){ printf("FATOR = 1"); fator = 1; } return fator; } }  
       
       
       
       
       
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.