Strings (linguagem C)  XML
Índice dos Fóruns » Outras Linguagens
Autor Mensagem
cake
JavaTeenager

Membro desde: 23/08/2010 15:31:20
Mensagens: 169
Offline



pq dá 1? como pode se tratar do mesmo endereço?
Explicações, por favor.

This message was edited 7 times. Last update was at 16/11/2010 15:50:12

getAdicted
Virtual Machine Man
[Avatar]

Membro desde: 07/09/2010 13:49:22
Mensagens: 556
Offline

Posso estar falando besteira,

mas quando você faz *variavel, você está se referindo ao valor daquela posição de memória, portanto:


Retorna verdadeiro, dessa forma, imprimirá 1, por que *str1 == *str2, agora se quiser fazer referencia a posição de memória, deveria ser &variavel, não é isso?

[]'s

This message was edited 2 times. Last update was at 11/11/2010 22:58:52


--
Desenvolvedor de Sistemas
Cursando Bacharelado em Análise de Sistemas e Tecnologia da Informação pela Faculdade de Tecnologia de São Paulo
getAdicted
Virtual Machine Man
[Avatar]

Membro desde: 07/09/2010 13:49:22
Mensagens: 556
Offline

Estou no Windows, sem DevC++ , não tenho como testar...

Poderia ser testado assim:


.. os dois devem imprimir: "bla", senão, falei besteira

falou!

--
Desenvolvedor de Sistemas
Cursando Bacharelado em Análise de Sistemas e Tecnologia da Informação pela Faculdade de Tecnologia de São Paulo
diegohsi
JavaTeenager
[Avatar]

Membro desde: 30/05/2010 21:52:01
Mensagens: 180
Offline

Não sei bem em C, mas pesquisei aqui e entendi o seguinte...

0 = true
1 = false

entao como temos 2 variáveis e ponteiros para posições diferentes de memória retornará 1.

strcmp(str1, str2) é um função responsavel pela comparação retornando 0 são iguais, caso contrário são diferentes
getAdicted
Virtual Machine Man
[Avatar]

Membro desde: 07/09/2010 13:49:22
Mensagens: 556
Offline

1 = true
0 = false

não é diegohsi ?

verdadeiro e falso?

[]'s

This message was edited 1 time. Last update was at 11/11/2010 23:52:19


--
Desenvolvedor de Sistemas
Cursando Bacharelado em Análise de Sistemas e Tecnologia da Informação pela Faculdade de Tecnologia de São Paulo
diegohsi
JavaTeenager
[Avatar]

Membro desde: 30/05/2010 21:52:01
Mensagens: 180
Offline

não
getAdicted
Virtual Machine Man
[Avatar]

Membro desde: 07/09/2010 13:49:22
Mensagens: 556
Offline

caracas! hehe

--
Desenvolvedor de Sistemas
Cursando Bacharelado em Análise de Sistemas e Tecnologia da Informação pela Faculdade de Tecnologia de São Paulo
cake
JavaTeenager

Membro desde: 23/08/2010 15:31:20
Mensagens: 169
Offline

Posso estar falando besteira,

mas quando você faz *variavel, você está se referindo ao valor daquela posição de memória...


Quando faço:



Estou declarando e inicializando dois ponteiros para char.

Retorna verdadeiro, dessa forma, imprimirá 1, por que *str1 == *str2, agora se quiser fazer referencia a posição de memória, deveria ser &variavel, não é isso?


Perdão, mas do jeito que eu entendi, isso não faz muito sentido.
Veja bem, na minha pergunta eu estou comparando dois ponteiros para char.
Se o código fosse:



Estaríamos comparando os char's em si, o que também resultaria em 1, já que *str1 = *str2 = 'b'.



Perdão novamente, mas isso nem sequer deve compilar...
Como dito antes, *str1 e *str2 são char's, não cadeias de char's.
getAdicted
Virtual Machine Man
[Avatar]

Membro desde: 07/09/2010 13:49:22
Mensagens: 556
Offline

imprimir verdadeiro, 1:


imprimir falso, 0:



Não sei se no java verdadeiro é falso, hehe

Mas aqui deu certo.

--
Desenvolvedor de Sistemas
Cursando Bacharelado em Análise de Sistemas e Tecnologia da Informação pela Faculdade de Tecnologia de São Paulo
getAdicted
Virtual Machine Man
[Avatar]

Membro desde: 07/09/2010 13:49:22
Mensagens: 556
Offline

Exato, por isso peguei só o primeiro caracter! Caso contrario deveria-se declarar um vetor de caracteres!

--
Desenvolvedor de Sistemas
Cursando Bacharelado em Análise de Sistemas e Tecnologia da Informação pela Faculdade de Tecnologia de São Paulo
cake
JavaTeenager

Membro desde: 23/08/2010 15:31:20
Mensagens: 169
Offline

Não sei bem em C, mas pesquisei aqui e entendi o seguinte...

0 = true
1 = false


O amigo está enganado.

1 = true
0 = false

entao como temos 2 variáveis e ponteiros para posições diferentes de memória retornará 1.


No caso, temos dois ponteiros para posições iguais, creio.
É exatamente aí que está a minha dúvida: como posso ter declarado e inicializado duas cadeias diferentes e elas apontarem pro mesmo lugar só por terem conteúdos iguais?

strcmp(str1, str2) é um função responsavel pela comparação retornando 0 são iguais, caso contrário são diferentes


strcmp é uma função que compara conteúdos de duas cadeias, que não é o caso aqui, onde estamos comparando ponteiros.
getAdicted
Virtual Machine Man
[Avatar]

Membro desde: 07/09/2010 13:49:22
Mensagens: 556
Offline

boa...

--
Desenvolvedor de Sistemas
Cursando Bacharelado em Análise de Sistemas e Tecnologia da Informação pela Faculdade de Tecnologia de São Paulo
getAdicted
Virtual Machine Man
[Avatar]

Membro desde: 07/09/2010 13:49:22
Mensagens: 556
Offline

Esse é do mestre!

Coordenador das olimpiadas de programação de Santos.

Sr. Ciro Cirne Trindade.

[]'s
 Nome do arquivo Prog2-04-Ponteiros.pdf [Disk] Download
 Descrição
 Tamanho 308 Kbytes
 Baixado:  57 vez(es)

This message was edited 1 time. Last update was at 12/11/2010 00:14:00


--
Desenvolvedor de Sistemas
Cursando Bacharelado em Análise de Sistemas e Tecnologia da Informação pela Faculdade de Tecnologia de São Paulo
cake
JavaTeenager

Membro desde: 23/08/2010 15:31:20
Mensagens: 169
Offline

Citando e comentando o código do amigo:

getAdicted
Virtual Machine Man
[Avatar]

Membro desde: 07/09/2010 13:49:22
Mensagens: 556
Offline

Entendi, hehe

Mas é seis por meia duzia: str == *str, é isso?

This message was edited 1 time. Last update was at 12/11/2010 00:17:47


--
Desenvolvedor de Sistemas
Cursando Bacharelado em Análise de Sistemas e Tecnologia da Informação pela Faculdade de Tecnologia de São Paulo
 
Índice dos Fóruns » Outras Linguagens
Ir para:   
Powered by JForum 2.1.8 © JForum Team