1 00:00:00,000 --> 00:00:00,520 2 00:00:00,520 --> 00:00:03,530 >> COLUMNA: Imos escribir un programa que solicita ao usuario dúas cordas e 3 00:00:03,530 --> 00:00:07,170 logo di se esas cordas son iguais ou non iguais. 4 00:00:07,170 --> 00:00:10,290 Eu xa comezou nos aquí por printf chamando dúas veces e chamando 5 00:00:10,290 --> 00:00:14,520 GetString dúas veces, almacenando o retorno Os valores de S e T, respectivamente. 6 00:00:14,520 --> 00:00:17,960 >> Agora, os meus instintos para comparar estes dous cadeas sería usar o familiar 7 00:00:17,960 --> 00:00:19,160 fornecedor de igualdade - 8 00:00:19,160 --> 00:00:22,070 se s é igual é igual a t. 9 00:00:22,070 --> 00:00:28,120 Entón eu estou indo a ir adiante e impresión out "Inseriu o mesmo! 10 00:00:28,120 --> 00:00:35,190 Outra cousa, se iso non é verdade, eu son simplemente vai escribir printf ("Inseriu 11 00:00:35,190 --> 00:00:37,880 cousas diferentes! 12 00:00:37,880 --> 00:00:38,850 >> Moi sinxelo - 13 00:00:38,850 --> 00:00:41,820 Estou simplemente comparando s contra t, e se son iguais, 14 00:00:41,820 --> 00:00:43,250 imprimir tanto. 15 00:00:43,250 --> 00:00:45,450 Imos compilar e executar este programa. 16 00:00:45,450 --> 00:00:51,950 Fai comparar 0. / Compare 0, dicir algo, Ola, 17 00:00:51,950 --> 00:00:54,200 dicir algo, Olá 18 00:00:54,200 --> 00:00:56,870 >> Desafortunadamente, o programa pensa que eu teño ingresaran cousas distintas, aínda que 19 00:00:56,870 --> 00:00:59,530 claramente escrito "Ola" a Igualmente dúas veces. 20 00:00:59,530 --> 00:01:00,850 Agora, por que pode ser iso? 21 00:01:00,850 --> 00:01:03,750 >> Ben, acontece que todo isto tempo, secuencias de ser un pouco máis 22 00:01:03,750 --> 00:01:06,780 complexo do que unha secuencia de caracteres debaixo do capó. 23 00:01:06,780 --> 00:01:11,450 En realidade, unha cadea é un punteiro ou un enderezo, especialmente a dirección 24 00:01:11,450 --> 00:01:14,640 do primeiro carácter que secuencia de caracteres. 25 00:01:14,640 --> 00:01:18,640 >> E así, cando comparamos s contra t co signo igual igual, estamos 26 00:01:18,640 --> 00:01:23,200 realmente pedindo, é esta dirección igual igual a este enderezo? 27 00:01:23,200 --> 00:01:26,850 E iso non vai ser o caso de que se o usuario inseriu en dous diferentes 28 00:01:26,850 --> 00:01:30,370 cordas e chamamos GetString dúas veces para obtelos, porque a memoria 29 00:01:30,370 --> 00:01:34,480 GetString que usa para almacenar o primeiro corda podería estar aquí na memoria RAM, pero o 30 00:01:34,480 --> 00:01:37,120 memoria que GetString usa para almacenar a segunda corda vai 31 00:01:37,120 --> 00:01:38,760 estar aquí na RAM. 32 00:01:38,760 --> 00:01:42,380 E, claro, entón, estes dous anacos de memoria teñen enderezos distintos para 33 00:01:42,380 --> 00:01:44,220 seus primeiros personaxes. 34 00:01:44,220 --> 00:01:46,120 >> Entón é s igual igual a t? 35 00:01:46,120 --> 00:01:46,885 Ben, non. 36 00:01:46,885 --> 00:01:50,510 Se S e T están apuntando para diferentes anacos de memoria, como eles serían por 37 00:01:50,510 --> 00:01:54,140 chamando GetString dúas veces, eles non son, de feito, será o mesmo. 38 00:01:54,140 --> 00:01:57,700 Así, parece ser o caso de que a comparar dúas cordas no intuitivo 39 00:01:57,700 --> 00:02:01,050 xeito que esperamos, carácter para carácter, necesitamos unha outra técnica 40 00:02:01,050 --> 00:02:02,300 completamente. 41 00:02:02,300 --> 00:02:03,902