Jump to content

Duvida em inicialização de ponteiros


mandelacruz

Recommended Posts

#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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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!

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...