2016-12-02 15 views
0

私のプログラムを実行すると、IF(ch [0] == 'P')は実際に値 'P'をch [0]に置きます。ここで起こっていることは何ですか?出力は次のとおりです。「アレイはPyzある」IF文が関数内の配列要素を変更しています

char *try1(char ch[]); 

int main() 
{ 
    char ch[] = { 'x','y','z' }, *ch1; 
    ch1=try1(ch); 
    printf("\nArray is %s\n",ch1); 
    return 0; 
} 

char *try1 (char ch[]) 
{ 
    if (ch[0]=='P') 
    { 
    ch[1]='Q'; 
    } 

    return ch; 
} 
+3

を読んで、あなたが '' = '=='としていませんか? –

+0

ありがとうBJマイヤーズ。あなたが正しいです。申し訳ありませんが、私はこれを投稿する前に非常に慎重にしようとしたが、私はそれを逃した。私は将来もっと徹底するつもりです。 – DartmouthMan

+0

[正しいC書式設定](// prohackr112.tk/r/proper-c-formatting)を調べてください。あるいは、コードを徹底的に難読化する方法を学んでください(// prohackr112.tk/r/proper-c-obfuscation)。 –

答えて

2

あなたは文字列としてCHを解釈する場合は、「/ 0」で配列を終了する必要があります。

char ch[] = { 'x','y','z', '\0' } 

char ch[] = { 'x','y','z'} 

交換し、出力が "アレイがxyzです。"詳細については

https://en.wikipedia.org/wiki/Null-terminated_string

関連する問題