int main(void) {
char testStr[50] = "Hello, world!";
char revS[50] = testStr;
}
Hata alıyorum: revS
numaralı satırda "geçersiz başlatıcı". Neyi yanlış yapıyorum?"Geçersiz Başlatıcı" alıyorum, ne yapıyorum yanlış?
int main(void) {
char testStr[50] = "Hello, world!";
char revS[50] = testStr;
}
Hata alıyorum: revS
numaralı satırda "geçersiz başlatıcı". Neyi yanlış yapıyorum?"Geçersiz Başlatıcı" alıyorum, ne yapıyorum yanlış?
Bu şekilde başlatamayacağınız için, başlangıç değeri olarak sabit bir ifadeye ihtiyacınız vardır.
#define HWSTR "Hello, world!"
int main (void) {
char testStr[50] = HWSTR;
char revS[50] = HWSTR;
:
}
Bu kaynağı minimal duplikasyonla sabit ifadesini sağlamaktadır: Eğer gerçekten başlatma isterseniz gibi bir şey kullanabilirsiniz
int main (void) {
char testStr[50] = "Hello, world!";
char revS[50]; strcpy (revS, testStr);
:
}
Veya: ile değiştirin.
char[]
için başlatıcı, ya bir tamsayı dizgisi ya da {1,2,3,4}
gibi bir şey olmalıdır. Başka bir değişkenin adı olmasına izin verilmez.
Diziler atanabilir.
Sen testStr
sizin başlatma gibi diziler başlatmak için kullanılabilir revS
memcpy(revS,testStr,50);
Sadece sabit ifadelere testStr
içeriğini kopyalamak için memcpy kullanmalıdır.
revS
, başka bir dizi değişkeni ile sabit bir ifadeyi başlatmaya çalışıyorsunuz. İlk dizenin içeriğini ikinci kopyaya kopyalamak isterseniz, strcpy
'u kullanmanız gerekir.
char
için
char *
atanamıyor çünkü yanlış
char revS[50] = testStr;
yapıyoruz
.
Çalışır revS = testStr;
çalışmalıdır.
ikinci dizi manipüle üzerinde plan sürece ayrıca bir işaretçi kullanabilirsiniz: Eğer birlikte dizide belirli bir konuma işaret edebilir gerçekten çılgın almak istiyorsanız
int main(void){
char textStr[50] = "hello worlds!";
char *revS = textStr;
printf("%s\n", revS);
}
referans operatörü:
int main(void){
char textStr[50] = "hello worlds!";
char *revS = &textStr[5];
printf("%s\n", revS);
}