Jump to content
Sign in to follow this  
mandelacruz

Duvida em inicialização de ponteiros

 Read less than a minute

Recommended Posts

Posted (edited)
 Read less than a minute
#include <stdio.h>
#include <stdlib.h>

void main(){
    char *c = "testando"; // Porque aqui é possivel criar um vetor de caracteres na declaração de um ponteiro para char
    int *i = {1,3,5,7,9}; // mas aqui não é possivel criar um vetor de inteiros na declaração de um ponteiro para inteiros?
}

 

Editei pq estava muito confuso da forma que perguntei antes, agora ta mais resumido a dúvida.

Edited by mandelacruz

Share this post


Link to post
Share on other sites
 Read less than a minute

https://overiq.com/c-programming-101/character-array-and-character-pointer-in-c/

Esse site explica bem o que acontece fazendo:

    char *p = "testando"; 
    char P[] = "testando";

O que na minha cabeça deveria ser a mesma coisa para:

    int *i = {1,3,5,7,8};
    int I[] = {1,3,5,7,9};

Mas nao funciona da mesma forma, então estou procurando saber o porque, mas não encontro em canto algum.

Share this post


Link to post
Share on other sites
Posted (edited)
 Read less than a minute

Oi. Se eu nao me engano eh por regra da linguagem. Primeiro eh bom notar que um ponteiro NAO eh um array, e um array NAO eh um ponteiro.

Se nao estou enganado, {1, 2, 3} nao eh exatamente um  array de inteiros, mas sim uma lista de inicializadores. Isso pode ser usado para inicializar um array de inteiros, mas nao um ponteiro, por exemplo:

int a[] = {1, 2, 3};  Por baixo dos panos, isso esta na verdade:

  1. Reservando um espaco de sizeof(int) * 3 na stack
  2. Colocando cada valor em a[0]...a[2] indivudualmente. Por ex:  a[0]=1; a[1]=2...

Para voce fazer algo semelhante ao que vc quer fazer, vc pode usar compound literals.

int *a = (int []){1,2,3};

Neste trexo vc esta criando uma lista anonima de inteiros, e depois designando um ponteiro para a primeira posicao dessa lista, atravez do array decay.

 

Acho que usei alguns termos mais avancados nessa explicacao, mas o que eu estou tentando dizer eh: Isso nao eh possivel pois eh regra da linguagem!

Espero ter ajudado!

Edited by unc4nny

Share this post


Link to post
Share on other sites
 Read less than a minute

Ajudou sim.

Esse compound literals faz total sentido com oque eu estava pensando e tentando fazer.

Inclusive nunca tinha ouvido falar nele antes, provavelmente tem no livro que estou estudando, mas não cheguei nessa parte ainda.

Enfim, obrigado!!

  • Curtir 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...