2012-06-15 20 views

cevap

19

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.

2

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.

7

Diziler atanabilir.

Sen testStr sizin başlatma gibi diziler başlatmak için kullanılabilir revS

memcpy(revS,testStr,50); 
4

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.

1
Sen char için char * atanamıyor çünkü yanlış

char revS[50] = testStr; 

yapıyoruz

.

Çalışır revS = testStr; çalışmalıdır.

0

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); 
} 
İlgili konular