mandelacruz Postado Março 31, 2020 em 01:44 Compartilhar Postado Março 31, 2020 em 01:44 #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 para o comentário Compartilhar em outros sites More sharing options...
mandelacruz Postado Março 31, 2020 em 06:21 Autor Compartilhar Postado Março 31, 2020 em 06:21 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 para o comentário Compartilhar em outros sites More sharing options...
unc4nny Postado Março 31, 2020 em 12:36 Compartilhar Postado Março 31, 2020 em 12:36 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: Reservando um espaco de sizeof(int) * 3 na stack 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 para o comentário Compartilhar em outros sites More sharing options...
mandelacruz Postado Março 31, 2020 em 14:23 Autor Compartilhar Postado Março 31, 2020 em 14:23 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!! Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Arquivado
Este tópico foi arquivado e está fechado para novas respostas.