СПІКЕР: Давайце напішам праграму, якая запытвае ў карыстальніка двух радкоў і затым паведамляе, ці з'яўляецца гэтыя радкі аднолькавыя або не аднолькавыя. Я ўжо пачаў нас тут называючы Printf двойчы і выкліку GetString двойчы, захоўвання вяртанне Значэння ў с і т, адпаведна. Цяпер, мае інстынкты, каб параўнаць гэтыя два Радкі будзе выкарыстоўваць знаёмыя Аператар роўнасці - калі з роўна роўная т. Тады я буду ісці наперад і друк з "Вы ўвялі тое ж самае! У адваротным выпадку, калі гэта не так, я проста збіраецца ўвесці Е ("Вы ўвялі розныя рэчы! Даволі проста - Я проста параўноўваючы сек супраць т, і калі яны роўныя, Раздрукаваўшы столькі ж. Давайце скампіляваць і запусціць гэтую праграму. Зрабіць параўнаць 0. / Параўнаць 0, нешта сказаць, прывітанне, нешта сказаць, прывітанне. На жаль, праграма думае, што я набралі розныя рэчы, хоць я выразна набраў "прывітанне" Сапраўды гэтак жа абодва разы. Цяпер, чаму гэта можа быць? Ну, атрымліваецца, што ўсё гэта Час, радкі, быў трохі больш складаней, чым паслядоўнасць знакаў пад капотам. На самай справе, гэта радок з'яўляецца паказальнікам або адрас, у прыватнасці, адрас першага знака ў тым, што паслядоўнасць знакаў. І таму, калі мы параўноўваем сек супраць т з роўным знака роўнасці, мы на самай справе просяць, гэта адрас роўная роўная гэтым адрасе? І, што не збіраецца быць у выпадку, калі карыстач увёў у двух розных Радкі і мы назвалі GetString двойчы каб атрымаць іх, таму што памяць што GetString выкарыстоўвае для захоўвання першым радок можа быць тут, у памяці, але памяці, што GetString выкарыстоўвае для захоўвання другая радок будзе быць тут, у аператыўнай памяці. І вядома, то, гэтыя два кавалкі памяці маюць розныя адрасы для іх самыя першыя сімвалы. Так з роўнымі роўная т? Ну, няма. Калі з і т паказваюць на розныя кавалкі памяці, як яны былі б на называючы GetString двойчы, гэта не так, на самай справе, будзе тое ж самае. Так што, падобна, мае месца, што ў параўнаць два радкі ў інтуітыўны спосаб, якім мы чакаем, характар ​​для характар, нам патрэбен іншы метад ў цэлым.