Açıklama
Metin dizeleri iki şekilde temsil edilebilir. 0019 sürümünden itibaren çekirdeğin bir parçası olan String veri türünü kullanabilir veya char türünde bir dizeden dize yapabilir ve null-sonlandırabilirsiniz. Bu sayfada ikinci yöntem açıklanmıştır. Daha fazla bellek pahasına size daha fazla işlevsellik veren String nesnesi hakkında daha fazla bilgi için String nesnesi sayfasına bakın.
Sözdizimi
Aşağıdakilerin tümü, dizeler için geçerli bildirimlerdir.
char Str1[15];
char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
char Str4[] = "arduino";
char Str5[8] = "arduino";
char Str6[15] = "arduino";
Dizeleri bildirme olanakları
Str1'de olduğu gibi başlatmadan bir dizi karakter bildirme
Bir dizi karakter belirtin (bir ekstra karakterle) ve derleyici Str2'deki gibi gerekli boş karakteri ekleyecektir
Açıkça null karakterini ekleyin, Str3
Tırnak işaretleri içinde bir dize sabitiyle başlat; derleyici dizeyi dize sabitine ve sonlandırıcı bir boş karakter olan Str4'e sığacak şekilde boyutlandırır
Diziyi açık bir boyut ve dize sabitiyle (Str5) başlatın
Daha büyük bir dize olan Str6 için ekstra alan bırakarak diziyi başlatın
Boş sonlandırma
Genellikle, dizeler boş karakterle (ASCII kodu 0) sonlandırılır. Bu, işlevlerin ( Serial.print()
gibi Serial.print()
bir dizenin sonunun nerede olduğunu söylemesini sağlar. Aksi takdirde, dizenin bir parçası olmayan sonraki bayt belleğini okumaya devam ederler.
Bu, dizenizin içermesini istediğiniz metinden bir karakter daha fazla alana sahip olması gerektiği anlamına gelir. Bu nedenle "arduino" sadece yedi olmasına rağmen Str2 ve Str5'in sekiz karakter olması gerekir - son konum otomatik olarak boş karakterle doldurulur. Str4 otomatik olarak sekiz karaktere boyutlandırılacaktır, biri ekstra null için. Str3'te, null karakteri ('\ 0' yazılmıştır) açıkça ekledik.
Son boş karakter içermeyen bir dizenin olabileceğini unutmayın (örneğin, Str2 uzunluğunu sekiz yerine yedi olarak belirlediyseniz). Bu, dizeleri kullanan çoğu işlevi kıracaktır, bu nedenle kasıtlı olarak yapmamalısınız. Bununla birlikte, garip bir şekilde davranan bir şey fark ederseniz (dizede olmayan karakterler üzerinde çalışıyor), bu sorun olabilir.
Tek tırnak mı yoksa çift tırnak mı?
Dizeler her zaman çift tırnak içinde ("Abc") tanımlanır ve karakterler her zaman tek tırnak içinde ('A') tanımlanır.
Uzun telleri sarma
Bunun gibi uzun dizeleri sarabilirsiniz:
char myString[] = "This is the first line"
" this is the second line"
" etcetera";
Dize dizileri
Bir dizi dizeyi ayarlamak için LCD ekranlı bir proje gibi büyük miktarlarda metinle çalışırken genellikle kullanışlıdır. Dizelerin kendileri diziler olduğundan, bu aslında iki boyutlu dizinin bir örneğidir.
Aşağıdaki kodda, char
“char *” veri char
sonraki yıldız işareti bunun bir “işaretçiler” dizisi olduğunu gösterir. Tüm dizi adları aslında işaretçilerdir, bu nedenle bir dizi dizi oluşturmak için bu gereklidir. İşaretçiler, yeni başlayanların anlaması için C ++ 'ın daha ezoterik bölümlerinden biridir, ancak burada etkili bir şekilde kullanmak için işaretçileri ayrıntılı olarak anlamak gerekli değildir.