mandelacruz Posted March 31, 2020 at 01:44 AM Share Posted March 31, 2020 at 01:44 AM #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 More sharing options...
mandelacruz Posted March 31, 2020 at 06:21 AM Author Share Posted March 31, 2020 at 06:21 AM 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 More sharing options...
unc4nny Posted March 31, 2020 at 12:36 PM Share Posted March 31, 2020 at 12:36 PM 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 to comment Share on other sites More sharing options...
mandelacruz Posted March 31, 2020 at 02:23 PM Author Share Posted March 31, 2020 at 02:23 PM 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 to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.