﻿
{"id":6428,"date":"2017-05-25T00:18:24","date_gmt":"2017-05-25T00:18:24","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=6428"},"modified":"2017-05-25T00:25:55","modified_gmt":"2017-05-25T00:25:55","slug":"cta-gostericipointer-gostericiler-ile-dizi-islemlerinde-char-degerinin-null-kontrolu","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/cta-gostericipointer-gostericiler-ile-dizi-islemlerinde-char-degerinin-null-kontrolu\/","title":{"rendered":"C#\u2019ta G\u00f6sterici(Pointer) \u2013 G\u00f6stericiler \u0130le Dizi \u0130\u015flemlerinde char De\u011ferinin null Kontrol\u00fc &#8211; XII"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Asl\u0131nda bir \u00f6nceki <a href=\"http:\/\/www.gencayyildiz.com\/blog\/cta-gostericipointer-struct-turunden-gostericiler-ve-ok-operatoru-xi\/\" target=\"_blank\">C#\u2019ta G\u00f6sterici(Pointer) \u2013 struct T\u00fcr\u00fcnden G\u00f6stericiler ve \u201c->\u201d(Ok) Operat\u00f6r\u00fc \u2013 XI<\/a> ba\u015fl\u0131kl\u0131 i\u00e7eri\u011fimiz ile g\u00f6sterici yaz\u0131 dizimizi noktalam\u0131\u015ft\u0131k. Her ne kadar son noktay\u0131 koymu\u015f olsakda g\u00f6sterici ile belleksel i\u015flemler ger\u00e7ekle\u015ftirirken kar\u015f\u0131la\u015fabilece\u011finiz olas\u0131 bir duruma dair ek bilgi vermeksizin bu yaz\u0131 dizisini sonland\u0131rmak, benim nacizane amac\u0131m\u0131n yerini bulmamas\u0131na sebep olacakt\u0131r.<\/p>\n<p><em><strong>Peki nedir bu yaz\u0131da anlatmak istedi\u011fim?<\/strong><\/em><br \/>\nHemen ba\u015flayal\u0131m.<\/p>\n<p>K\u00e2h g\u00f6stericileri yeni \u00f6\u011freniyor olun k\u00e2h g\u00f6stericiler ile bir\u00e7ok defa belleklere m\u00fcdahalede bulunun fark etmeksizin g\u00f6receksiniz ki, i\u015faret\u00e7ileri genellikle karakter i\u015flemlerinde kullanmaktay\u0131z.<\/p>\n<p>Biliyorsunuz ki, C#&#8217;ta string ifadeler aslen char dizisidirler ve bellekte tek tek karakter olarak ard\u0131\u015f\u0131l bir \u015fekilde tutulmaktad\u0131rlar. Haliyle bir string ifadeyi char dizisi gibi ele al\u0131p g\u00f6stericiye a\u015fa\u011f\u0131daki gibi atayabilmekteyiz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            unsafe\r\n            {\r\n                string Isim = &quot;Gen\u00e7ay Y\u0131ld\u0131z&quot;;\r\n                fixed (char* isimPointer = Isim)\r\n                    for (int i = 0; i &lt; Isim.Length; i++)\r\n                        Console.WriteLine(isimPointer&#x5B;i]);\r\n                Console.Read();\r\n            }\r\n<\/pre>\n<p>Asl\u0131nda buraya kadar yapm\u0131\u015f oldu\u011fumuz \u015fu ana kadar ele ald\u0131\u011f\u0131m\u0131z, inceledi\u011fimiz, irdeledi\u011fimiz daha do\u011frusu bildi\u011fimiz \u015feylerdir. Benim as\u0131l de\u011finmek istedi\u011fim nokta, ya ilgili string ifade bir de\u011fi\u015fken \u00fczerinden de\u011filde a\u015fa\u011f\u0131daki gibi direkt olarak de\u011fer \u00fczerinden fixed yap\u0131s\u0131 i\u00e7erisinde char dizisi olarak elde edilse? ? ?<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            unsafe\r\n            {\r\n                fixed (char* isimPointer = &quot;Gen\u00e7ay Y\u0131ld\u0131z&quot;)\r\n                    for (int i = 0; i &lt; ??; i++)\r\n                        Console.WriteLine(isimPointer&#x5B;i]);\r\n                Console.Read();\r\n            }\r\n<\/pre>\n<p>Bir \u00f6nceki kod blo\u011funda metinsel ifade bir de\u011fi\u015fkenden geldi\u011fi i\u00e7in for d\u00f6ng\u00fcs\u00fcnde de\u011fi\u015fkenin Length \u00f6zelli\u011fi ile de\u011ferinin karakter uzunlu\u011funu elde edebiliyorduk. Ama yukar\u0131daki kod blo\u011funu incelersek e\u011fer metinsel ifadeyi temsil eden bir de\u011fi\u015fken olmad\u0131\u011f\u0131 i\u00e7in for d\u00f6ng\u00fcs\u00fcnde manuel de\u011fer yazamayaca\u011f\u0131m\u0131za g\u00f6re nas\u0131l bir yakla\u015f\u0131mda bulunmam\u0131z gerekmektedir sorusuna cevap bulmakt\u0131r niyetim&#8230;<\/p>\n<p>\u0130\u015fte b\u00f6yle bir durumda char* tipinden pointer\u0131n dizisel de\u011feri &#8220;Gen\u00e7ay Y\u0131ld\u0131z&#8221; metinsel yap\u0131s\u0131ndan geldi\u011fi i\u00e7in char t\u00fcr\u00fc yaz\u0131n\u0131n neresinde sonland\u0131\u011f\u0131n\u0131 bilemeyecektir. \u0130\u015fte bu olas\u0131 bilinmezlik durumunda &#8220;n&#8221; karakterden sonra null de\u011ferini ifade eden &#8216;\\0&#8243; ifadesini a\u015fa\u011f\u0131daki gibi kullanmak yeterli olacakt\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            unsafe\r\n            {\r\n                fixed (char* isimPointer = &quot;Gen\u00e7ay Y\u0131ld\u0131z&quot;)\r\n                    for (int i = 0; isimPointer&#x5B;i] != '&#92;&#48;'; i++)\r\n                        Console.WriteLine(isimPointer&#x5B;i]);\r\n                Console.Read();\r\n            }\r\n<\/pre>\n<p>G\u00f6stericilerle dizi i\u015flemleri yaparken char t\u00fcr\u00fcnde \u00e7al\u0131\u015f\u0131yorsak e\u011fer &#8216;\\0&#8217; ifadesi ilgili metinsel ifadenin sonuna yani daha do\u011frusu char dizisinin sonuncu eleman\u0131na gelinmi\u015f oldu\u011funu g\u00f6stermektedir.<\/p>\n<p>Umar\u0131m anlatmak istedi\u011fimi net bir \u015fekilde izah edebilmi\u015fimdir.<\/p>\n<p>Sonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Asl\u0131nda bir \u00f6nceki C#\u2019ta G\u00f6sterici(Pointer) \u2013 struct T\u00fcr\u00fcnden G\u00f6stericiler ve \u201c->\u201d(Ok) Operat\u00f6r\u00fc \u2013 XI ba\u015fl\u0131kl\u0131 i\u00e7eri\u011fimiz ile g\u00f6sterici yaz\u0131 dizimizi noktalam\u0131\u015ft\u0131k. Her ne kadar son noktay\u0131 koymu\u015f olsakda g\u00f6sterici ile belleksel i\u015flemler ger\u00e7ekle\u015ftirirken&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":3014,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[1817,1816,1761,1815,1748],"class_list":["post-6428","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c-sharp-c","tag-c-pointer-char-0","tag-c-pointer-char-null","tag-cta-gosterici","tag-gostericiler-ile-dizi-islemlerinde-char-degerinin-null-kontrolu","tag-pointer"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/6428","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=6428"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/6428\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/3014"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=6428"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=6428"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=6428"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}