2012-10-05 19 views

cevap

10

, Bölüm 6.7:

Üretme montajcı "gcc S" ile aşağıdaki kodu oluşturur (her durumda biraz daha farklı bir sabit ile) tam olarak aynı şeyi oluşturmak teyit 0,9 Başlatma, paragraf 11: öyle

“bir sayısal alan için başlatıcı ... tek ifadesi, isteğe bağlı olarak ayraç içine olacaktır”. Anlamsal bir fark yoktur; Diş telleri basitçe mevcut olabilir veya anlamında bir değişiklik olmadan mevcut olmayabilir.

6

Stil. Her ikisi de aynı şeyle sonuçlanır ve ikisi de kötüdür. const char * str1="hello";'u kullanmış olmalısınız.

+0

{"merhaba"} dizi olarak düşünmüyor mu? {} m 'de yazdığımız diziyi tanımlamak için bildiğimiz gibi, bu konuda şaşılacak bir şey var ve ya char * str2 = {"merhaba", "merhaba"} ise; Bu durumda – Pratik

+0

@ Pratik, tüm skaler türleri de '{}' başlatıcıları kabul eder. –

+0

@JensGustedt Lütfen skaler tiplerin tanımını söyler misiniz? – yejinxin

-1

bir dizi ve bir "dizesi" nedeniyle bir dize karakter bir dizidir arasında hiçbir fark yoktur.

2

https://stackoverflow.com/a/3462768/153225 bakınız.

parantez gereksizdir. 2011 C standardına göre

#include <iostream> 
using namespace std; 

void test1() { 
    const char *str1="hello1"; 
    cout << str1 << endl; 
} 

void test2() { 
    const char *str2={"hello2"}; 
    cout << str2 << endl; 
} 

int main() { 
    test1(); 
    test2(); 
}